Open Marci8622 opened 2 years ago
Oi, @Marci8622. Tudo bem? Seguinte:
|
que deveria ser &
.String
(no exemplo, a variável sexo) e precisamos fazer uma comparação, utilizamos o método equals()
. Nesse caso, utilizei o equalsIgnoreCase()
. Esse método ignora se a String
está em maiúscula ou minuscula.Primeiro, dá uma olhadinha nessa "Tabela Verdade das Operações lógicas" e veja a diferença de quando utilizamos o |
- &
:
Rodando o código em modo debug e informando a letra "f":
|
: falso + verdadeiro = verdadeiro. Logo o while é "startado".&
: falso + verdadeiro = falso. Logo o while não é "startado". public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Informe o sexo: ");
String sexo = scan.next();
while(!sexo.equalsIgnoreCase("f") | !sexo.equalsIgnoreCase("m")) {
System.out.println("O sexo deve ser f (feminino), ou m (masculino)! Informe novamente: ");
sexo = scan.next();
if (sexo.equalsIgnoreCase("f") | sexo.equalsIgnoreCase("m")) break;
}
}
Se ainda tem dúvidas, é só falar. (:
Ah, e como é só uma letra, você pode usar o char
no lugar de String
.
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Informe o sexo: ");
char sexo = scan.next().charAt(0);
while(sexo != 'f' & sexo != 'm') {
System.out.println("O sexo deve ser f (feminino), ou m (masculino)! Informe novamente: ");
sexo = scan.next().charAt(0);
if (sexo == 'f' | sexo == 'm') break;
}
}
No meu código, mesmo informando a letra f ou m, continua solicitando para informar novamente.