Salve a tutti, ho riscontrato un problema con un piccolo esercizio sulle eccezioni.
In pratica si richiede all'utente di inserire divisi da un ; i voti degli esami svolti, e successivamente ne calcola media e massimo.
L'errore che esce è il seguente: Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
eccezione che si riferisce alla riga in cui è scritto:
v.add(Integer.parseInt(s.nextToken()));
Vi riporto ora l'intero codice:
package esercizioException;
import java.util.StringTokenizer;
import prog.io.ConsoleInputManager;
import prog.io.ConsoleOutputManager;
import java.util.Vector;
public class esercizio {
public static void main(String[] args) throws RuntimeException {
// TODO Auto-generated method stub
RuntimeException e1 = new RuntimeException();
ConsoleInputManager tastiera = new ConsoleInputManager ();
ConsoleOutputManager schermo = new ConsoleOutputManager ();
Vector <Integer> v = new Vector <> ();
StringTokenizer s;
float media=0;
float massimo=0;
String riga = tastiera.readLine("Inserisci voti, separati da ; : ");
s= new StringTokenizer (riga, ";");
try {
while(s.hasMoreTokens()) {
if((Integer.parseInt(s.nextToken())) <18 ||(Integer.parseInt(s.nextToken())) >30 ) {
throw e1;
}
else {
v.add(Integer.parseInt(s.nextToken()));
}
}
}
catch (NumberFormatException e) {
e.printStackTrace();
}
int i=0;
while(i<v.size()) {
media=media + v.elementAt(i);
if(v.elementAt(i) >= massimo) massimo = v.elementAt(i);
i++;
}
media=media/v.size();
schermo.println("La media è: " + media);
schermo.println("Il massimo è: " + massimo);
}
}
Grazie in anticipo