Tive um probleminha aqui. Fiz o loop com apenas uma condição e deu certo. Coloquei um OU(||) e o programinha deu erro. O que eu fiz de errado? Me expliquem ae Devs
O código:
int teste ;
do {
System.out.println("Digite 1 para conta especial e 2 para comum:");
teste = scan.nextInt();
if(teste == 1) {
usuario.status = "Conta Especial";
}
else if(teste == 2) {
usuario.status = "Conta Comum";
}else {
System.out.println("Digite um código válido!!!");
}
} while( (teste != 1) || (teste != 2));
Se você digitar 3 ou 4 o loop continua porque o número é diferente de 1, e também continuaria por ser diferente de 2, mas se você digitar 1 o loop continua porque 1 é diferente de 2, e se você digitar 2, o loop continua porque é diferente de 1.
Coloque “&&” no lugar de “||”, assim o loop só vai continuar se o número digitado for difernte de 1 E 2, que parece ser sua intenção.
Muito obrigado. Eu estou acostumado a trabalhar o && quando mais de uma situação ocorre ao mesmo tempo. Por exemplo : while( (1>0) && (2>1) && (3>2) ) .Na minha cabeça essas 3 condições precisam obrigatoriamente ocorrer para que haja o funcionamento do programa. Já no caso do || seria apenas para ocorrência de uma das condições para prosseguir. Provavelmente foi esse meu equívoco. Valeu pelo esclarescimento.
Mas é exatamente esse o funcionamento do && e do ||. São as bases da lógica. Não tiveste qualquer equívoco aqui.
O teu equivoco, provavelmente, foi teres duas desigualdades e pensar como igualdades.
Ter (teste != 1 && teste != 2) é o mesmo que ter !(teste == 1 || teste == 2)