Problema sul controllo dei stringhe nel do while!! [RISOLTO]

di il
3 risposte

Problema sul controllo dei stringhe nel do while!! [RISOLTO]

System.out.print("Do you want to make another operations ? (1 for yes, 2 for no): ");
do
{
answer2 = input.next();
if(!answer2.equals("y") || !answer2.equals("n"))
{
System.out.print("Error, please retry : ");
}
}while(!answer2.equals("y") || !answer2.equals("n"));
}while(!answer2.equals("y"));
Anche se inserisco y o n, il programma le riconosce come stringhe errate e mi richiede di inserire una stringa.

3 Risposte

  • Re: Problema sul controllo dei stringhe nel do while!! [RISOLTO]

    Tommaso99 ha scritto:


    Anche se inserisco y o n, il programma le riconosce come stringhe errate e mi richiede di inserire una stringa.
    Il punto è che

    !answer2.equals("y") || !answer2.equals("n")

    non ha senso. Vuol dire: se non è "y" OPPURE se non è "n".
    Se scrivi y, hai: false || true (risultato: true)
    Se scrivi n, hai: true || false (risultato: true)
    Se scrivi A (o qualunque altra cosa) hai: true || true (risultato: true)
    In tutti i casi entri nel corpo del if !

    Il senso corretto invece è: se non è "y" E se non è "n", allora è un errore.
  • Re: Problema sul controllo dei stringhe nel do while!! [RISOLTO]

    Cambierei anche il messaggio, che dice di inserire "1" o "2", mentre tu vai a controllare su "y" e "n". Inoltre farei anche un controllo del tipo "answer2.equalsIgnoreCase("y")", in modo da contemplare sia le maiuscole che le minuscole
  • Re: Problema sul controllo dei stringhe nel do while!! [RISOLTO]

    Grazie mille, ho risolto!!
Devi accedere o registrarti per scrivere nel forum
3 risposte