2015-11-11 1 views
0

Le code suivant fonctionne tout le chemin jusqu'à où l'utilisateur entre le score pour l'équipe int homeScore = input.nextInt(), à quel point le compilateur renvoie le code d'erreur suivant:Comment modifier un objet créé en Java

Exception in thread "main" java.util.NoSuchElementException 
    at java.util.ArrayList$Itr.next(ArrayList.java:854) 
    at assignment.PremierLeagueManager.main(PremierLeagueManager.java:121) 
Java Result: 1 

Une idée est sur la façon de résoudre ce problème?

boolean validHome = false; 
boolean validAway = false; 
System.out.println("Enter name of Home team: "); 
String homeName = input.next(); 

Iterator<FootballClub> it = premierLeague.iterator(); 
while (it.hasNext()) { 
    if (it.next().getClubName().equals(homeName)) { 
     validHome = true; 
    } 
} 

System.out.println("Enter name of Away team: "); 
String awayName = input.next(); 
Iterator<FootballClub> it2 = premierLeague.iterator(); 

while (it2.hasNext()) { 
    if (it2.next().getClubName().equals(awayName)) { 
     validAway = true; 
    } 
} 

if (validHome == true && validAway == true) { 
    System.out.println("Enter number of goals scored by " + homeName + ":"); 
    int homeScore = input.nextInt(); 
    int x = premierLeague.indexOf(it.next()); 
    premierLeague.get(x).setGoalsScored(homeScore); 

    System.out.println("Enter number of goals scored by " + awayName + ":"); 
    int awayScore = input.nextInt(); 
    int y = premierLeague.indexOf(it2.next()); 
    premierLeague.get(y).setGoalsScored(awayScore); 
} else { 
    System.out.println("One of the teams are invalid. Please try again"); 
} 
+1

Qu'avez-vous à la ligne 121 dans PremierLeagueManager.java? – user5500105

+0

Veuillez corriger l'indendation. –

+0

Veuillez fournir le SSCCE. http://sscce.org/ –

Répondre

1

Au sommet où vous faites "while (it.hasNext())", cette boucle jusqu'à ce que l'itérateur n'a pas plus d'éléments, donc quand vous arrivez à « int x = premierLeague.indexOf (it.next()); ", il n'y a pas d'élément suivant pour l'itérateur, donc vous n'obtenez pas un tel élément. Si vous voulez recommencer, vous devez créer un nouvel itérateur.

0

Vous appelez it.next() après l'appel à input.nextInt(), mais il n'y a aucune garantie qu'il n'y ait aucun membre dans l'itérateur it. Je ne suis pas sûr que ce soit le problème, mais ça en a l'air. Vous ne nous dites pas quels sont les numéros de ligne de votre source, et il est déroutant que vous disiez qu'il s'agit d'une erreur de compilation quand il semble que ce soit une erreur d'exécution. Mais cela ressemble à une erreur, de toute façon (et vous le faites deux fois).