我正在写一个小应用程序,它会产生世界杯预选赛。该应用程序有6个列表(pot1,pot2,pot3等),每个列表包含9个团队,以及9个组(group1,group2等)的列表,每个组由6个团队组成。我试图从每个底池列表中删除一个团队并将其放入一个组列表中。
EG:从列表pot1中选择一个团队,将其从该列表中删除并放入列表group1中。
我目前能够从每个列表中删除一个团队并放入一个组但是我遇到了这个问题:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 6, Size: 6.
以下代码显示了我目前的工作。对于组列表中的每个组,我想从每个底池列表中删除一个团队并放在第一个组中。然后,一旦我从每个底池中移除了一个团队,我想开始添加到第二个组列表,依此类推,直到每个团队由6个团队组成。 我认为我遇到的问题是因为底池列表只包含6个团队,这导致了问题。首先,我认为这是问题是正确的,其次,是否有人知道如何解决这个问题?提前谢谢。
for(ArrayList<String> lists : groups){
for(int x = 0; x < 9 ; x++ ){
System.out.println( "\nthis is x : " +x);
runDraw(groups, pots,x);
}
}
public static void runDraw(List groups, List pots, int z){
x = 0;
Collections.shuffle((List<String>) pots.get(z));
System.out.println("this is z : " + z);
System.out.println("\nTeams in Pot " + y +" : " +pots.get(z).toString());
String[] chosen3 = new String[8];
chosen3[x] = ((List<String>) pots.get(z)).remove(x);
System.out.println( "\nThe team selected from Pot " + y +" is : " + chosen3[x].toUpperCase() + " and they will go into Group " + y);
//pot1.add(chosen3[i]);
((List<String>) groups.get(x)).add(chosen3[x]);
String t = groups.get(x).toString();
System.out.println( "Group " + y +" contains : " + t.substring(1, t.length()-1));
String s = pots.get(z).toString();
System.out.println("\nRemaining teams in Pot "+ y +" are : " + s.substring(1, s.length()-1)); //s.substring(1, s.length()-1) - removes brackets when printing list
y++;
}
答案 0 :(得分:1)
变化:
String[] chosen3 = new String[8];
为:
String[] chosen3 = new String[9];
或改变:
for(int x = 0; x < 9 ; x++ )
为:
for(int x = 0; x < 8 ; x++ )
最好的办法是将此值(8或9)发送给方法runDraw
,并相应地分配数组。