【发布时间】:2014-06-06 16:30:40
【问题描述】:
当我的程序进入我的这部分代码时,它会出现运行时错误。首先我知道它根本没有缩进。我忘了这样做,所以我知道阅读起来很痛苦。这个方法传递了 7 个数组列表,其中两个是我自己做的类。
public static void leaderboards(ArrayList<String> teamName, ArrayList<Outcome> aOutcome, ArrayList<Fixture> aFixture, ArrayList<Integer> awayScore, ArrayList<Integer> homeScore, ArrayList<Integer> awayNum, ArrayList<Integer> homeNum) {
int tem, temps;
ArrayList<Leaderboard> aLeaderboard = new ArrayList<Leaderboard>();
for (int counter = 0; counter < teamName.size(); counter++) {
Leaderboard aLeaderboardEntry = new Leaderboard();
aLeaderboard.add(aLeaderboardEntry);
}
for (int counter = 0; counter < aOutcome.size(); counter++) {
tem = (aFixture.get(counter)).getHomeNumber();
temps = (aFixture.get(counter)).getAwayNumber();
(aLeaderboard.get(tem - 1)).setGamesPlayed();
(aLeaderboard.get(temps - 1)).setGamesPlayed();
}
ArrayList<Results> aResult = new ArrayList<Results>();
for (int counter = 0; counter < aOutcome.size(); counter++) {
Results aResultsEntry = new Results();
aResult.add(aResultsEntry);
(aResult.get(counter)).setFixtureNumber(counter + 1);
(aResult.get(counter)).setHomeNumber(homeNum.get(counter));
(aResult.get(counter)).setAwayNumber(awayNum.get(counter));
(aResult.get(counter)).setHomeScore(homeScore.get(counter));
(aResult.get(counter)).setAwayScore(awayScore.get(counter));
}
for (int counter = 0; counter < aResult.size(); counter++) {
if (((aResult.get(counter)).getHomeScore()) > ((aResult.get(counter)).getAwayScore())) {
(aLeaderboard.get((aResult.get(counter)).getHomeNumber())).sethomeWins();
(aLeaderboard.get((aResult.get(counter)).getHomeNumber())).setTotalPoints(3);
(aLeaderboard.get((aResult.get(counter)).getAwayNumber())).setawayLosses();
} else if (((aResult.get(counter)).getHomeScore()) == ((aResult.get(counter)).getAwayScore())) {
(aLeaderboard.get((aResult.get(counter)).getHomeNumber())).sethomeDraws();
(aLeaderboard.get((aResult.get(counter)).getHomeNumber())).setTotalPoints(1);
(aLeaderboard.get((aResult.get(counter)).getAwayNumber())).setawayDraws();
(aLeaderboard.get((aResult.get(counter)).getAwayNumber())).setTotalPoints(1);
} else if (((aResult.get(counter)).getHomeScore()) < ((aResult.get(counter)).getAwayScore())) {
(aLeaderboard.get((aResult.get(counter)).getHomeNumber())).setHomeLosses();
(aLeaderboard.get((aResult.get(counter)).getAwayNumber())).setawayWins();
(aLeaderboard.get((aResult.get(counter)).getAwayNumber())).setTotalPoints(3);
}
}
for (int counter = 0; counter < aResult.size(); counter++) {
(aLeaderboard.get((aResult.get(counter)).getHomeNumber())).setHomeGoalsFor((aResult.get(counter)).getHomeScore());
(aLeaderboard.get((aResult.get(counter)).getHomeNumber())).setHomeGoalsAgainst((aResult.get(counter)).getAwayScore());
(aLeaderboard.get((aResult.get(counter)).getAwayNumber())).setAwayGoalsFor((aResult.get(counter)).getAwayScore());
(aLeaderboard.get((aResult.get(counter)).getAwayNumber())).setAwayGoalsAgainst((aResult.get(counter)).getHomeScore());
}
for (int counter = 0; counter < aLeaderboard.size(); counter++) {
int goalsFor = (aLeaderboard.get(counter)).getHomeGoalsFor() + (aLeaderboard.get(counter)).getAwayGoalsFor();
int goalsAgainst = (aLeaderboard.get(counter)).getHomeGoalsAgainst() + (aLeaderboard.get(counter)).getAwayGoalsAgainst();
int goalDifference = goalsFor - goalsAgainst;
(aLeaderboard.get(counter)).setGoalsDifference(goalDifference);
}
System.out.println(" Positon Team Games Played Home Wins Home Draws Home Losses Home Goals For Home Goals Against Away Wins Away Draws Away Losses Away Goals For Away Goals Against Goal Difference Total Points");
}
for(int counter = 0; counter<teamName.size();counter++) {
System.out.print((counter + 1) + " " + teamName.get(counter) + " " + (aLeaderboard.get(counter)).getGamesPlayed() + " " + (aLeaderboard.get(counter)).getHomeWins() + " " + (aLeaderboard.get(counter)).getHomeDraws() + " ");
System.out.print((aLeaderboard.get(counter)).getHomeLosses());
System.out.println();
}
错误在这一行:
(aLeaderboard.get((aResult.get(counter)).getAwayNumber())).setawayWins();
如果您需要代码的任何其他部分,例如类本身,请询问 这是它产生的错误
> D:\>java Project4 Exception in thread "main"
> java.lang.IndexOutOfBoundsException: Index: 20, Size: 20
> at java.util.ArrayList.rangeCheck(Unknown Source)
> at java.util.ArrayList.get(Unknown Source)
> at Project4.leaderboards(Project4.java:198)
> at Project4.main(Project4.java:114)
>
> D:\>
编辑: Away wins 是在排行榜类中声明的 int
public int awayWins;
套路胜是这个方法
public void setawayWins()
{
awayWins++;
}
【问题讨论】:
-
“首先我知道它根本没有缩进。我忘了这样做,所以我知道阅读起来很痛苦”它,为什么要打扰其他人试图帮助你?
-
张贴
setawayWins的声明 -
排行榜大小不等于 aResult.size()。 for 循环计数器在 aResult.size() 上循环。 aLeaderboard.get((aResult.get(counter)) 正在尝试访问不存在的行。
-
我已经发布了setawayWins的声明
-
我知道排行榜大小不等于 aResult 大小。aLeaderboard 应该是 20,而 aResult 应该是 270。
标签: java runtime-error indexoutofboundsexception