Erro no loop do/while

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 :slight_smile:

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.

1 curtida

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)

1 curtida