2015-11-11 24 views
0

下面的代碼工作一路上揚,直到用戶在其中輸入爲球隊int homeScore = input.nextInt()比分,此時編譯器返回以下錯誤代碼:如何進行更改創建對象的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 

任何想法如何解決這個問題?

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

你在PremierLeagueManager.java的第121行有什麼功能? – user5500105

+0

請修正這個indendation。 –

+0

請提供SSCCE。 http://sscce.org/ –

回答

1

,在您做頂「而(it.hasNext())」,這個循環,直到迭代器沒有更多的項目,所以,當你爲「int x = premierLeague.indexOf(it.next ());「,迭代器沒有下一個項目,所以你沒有這樣的元素。如果你想重新開始,你需要創建一個新的迭代器。

0

在致電input.nextInt()之後致電it.next(),但不能保證迭代器it中有任何成員。我不確定這是否是問題,但它看起來像。

您不會告訴我們源代碼的行號是什麼,並且當它看起來像是運行時錯誤時,您說這是編譯器錯誤令人困惑。但無論如何,這看起來像是一個錯誤(你會這樣做兩次)。