Como listado abaixo, meu código aparece esse erro de variável duplicada. Que eu sei que esta sendo duplicada pois preciso que fique assim. A principio não entendi o erro. Estou rodando no Eclipse.
Você tem duas variáveis com o mesmo identificador no escopo do método. Isso não é válido. Apesar do escopo das variáveis na linguagem Java ser o escopo de bloco, há blocos que não podem compartilhar nomes de variáveis quando estando um dentro do outro. A única exceção são membros de instância e variáveis locais em métodos e/ou construtores. Talvez haja mais algum caso especial, mas não me recordo. No seu caso você tem um método com uma variável chamada nomeUser
e, dentro do bloco desse método, vc tem um do
onde, em seu respectivo bloco, tem mais uma variável com o mesmo nome.
Sinceramente, redeclarar a variável, no seu caso, não faz sentido algum. Basta usá-la. Ou seja, na linha 15, troque String nomeUser = scan.next();
por nomeUser = scan.next();
.
Não, não precisa. Se achar que precisa de duas variáveis com o mesmo nome no mesmo escopo, é porque tem algo errado.
Então vc pode declará-las fora do loop, e usá-las dentro:
String nomeUser, senha;
do {
nomeUser = scan.nextLine();
senha = scan.nextLine();
} while( etc... )
Ou então vc declara as variáveis dentro do loop:
do {
String nomeUser = scan.nextLine();
String senha = scan.nextLine();
} while( etc... )
A diferença é que no primeiro caso, as variáveis estarão disponíveis depois do loop. Então se vc vai precisar delas depois, a primeira opção é a mais indicada. Mas se não vai precisar delas depois (pois só interessa fazer a validação que tem dentro do do
/while
), eu acho a segunda opção melhor, pois limita as variáveis ao menor escopo no qual são usadas (não tem o risco de usá-las “sem querer” em outros pontos onde não faz sentido).
De qualquer forma, reforço que não, vc não precisa “que fique assim”.
E por favor, das próximas vezes, coloque o código como texto. Fica mais fácil pra todos verem (no celular fica horrível de ler essa imagem, mesmo no computador não está muito bom), além de facilitar pra quem quiser copiar/colar o seu código para testar.
O fórum tem suporte à formatação de código. Basta selecioná-lo e usar o botão </>
do editor: