Ciao ragazzi, sono davvero nuovo in ambito programmazione. Ho questo problema: devo leggere un intero da tastiera e intercetti l'errore nel caso in cui venfa inserito un valore non valido (stringa, caratteri che non siano interi).
Il codice (funzionante) che ho scritto è il seguente:
Scanner tast=new Scanner(System.in);
Integer valore=null;
System.out.println("inserisci un valore");
boolean ok=true;
while(ok) {
try {
valore=Integer.parseInt(tast.next());
System.out.println(valore);
}catch(Exception E) {
System.out.println("inserici valore accettabile");
}
if(valore!=null) {
ok=false;
}
}
mentre, scrivendo questo codice qui, il sistema entra sempre nel blocco catch in un loop infinito nel caso in cui venga inserito una stringa e non un intero;
Scanner tast=new Scanner(System.in);
Integer valore=null;
System.out.println("inserisci un valore");
boolean ok=true;
while(ok) {
try {
valore=tast.nextInt();
System.out.println(valore);
}catch(Exception E) {
System.out.println("inserici valore accettabile");
}
if(valore!=null) {
ok=false;
}
}
}
La domanda è, perchè si genera un loop nel secondo caso? la logica mi porterebbe a pensare che anche il secondo codice dovrebbe funzionare. Chi mi sa aiutare? Grazie