Problema col while

di Anonimizzato11712 il
4 risposte
Forse è una cosa stupida, ma mi sta facendo diventare matto:

questo è il codice:

while(finito==false)
		{
			
			if(lettoreNum.hasNextInt()==true)								
			{
				età=lettoreNum.nextInt();
				finito=true;
				break;
			}
			System.out.println("errore");
			
		}

Il mio scopo è creare un metodo che controlli che io inserisca un intero e continui a chiedermi l'inserimento nel caso inserisca qualunque altra cosa, dopo un messaggio di errore.

Se inserisco subito un numero intero funziona tutto bene, ma appena inerisco, per esempio, dei caratteri a caso, mi si riempie la schermata di "errore errore errore errore........" e non capisco perchè... non dovrebbe stampare una volta il messaggio di errore e poi tornare al while e richiedermi l'inserimento di un nuovo valore? Grazie mille

4 Risposte

  • Ciao, immagino che tu stia usando gli scanner..In questo caso penso che il problema sia dovuto al fatto che il buffer interno non si svuoti. Per "forzare" questa cosa puoi leggere l'intera riga:
    
    while (!finito) {
    	if (lettoreNum.hasNextInt()) {
    		età = lettoreNum.nextInt();
    		finito = true;
    	} else {
    		lettoreNum.nextLine();
    		System.out.println("errore");
    	}
    }
    
  • Grazie mille!! funziona benissimo!!

    però non ho capito quel nextLine() a cosa serve... Grazie
  • Praticamente legge tutti i caratteri dal buffer fino al carattere di newline..di fatto "svuota" tutti i caratteri che non ti servono!
  • Capito! grazie!!
Devi accedere o registrarti per scrivere nel forum
4 risposte