2012-04-06 3 views
-1

メソッドで開始したarraylistを参照しようとしていますが、ArrayListから何かを削除しようとすると、ArrayListのサイズが0であるというエラーが表示されます。 ArrayListの値を設定すると、ArrayListのサイズがプリントアウトされます。これは、「学校」と呼ばれています。ここに私のコードです。ArrayList rangecheckエラー

import java.util.*; 
public class SchoolSolver{ 
    public static ArrayList<Girl> school = new ArrayList<Girl>(); 
    public static ArrayList<Girl> used = new ArrayList<Girl>(); 

    public static void main(String[] args){ 
     resetSchool(); 
     //System.out.println(school.size()); 
     boolean notPossible = false; 
     for(int i = 0; i < 7; i++){ 
      if(notPossible){ 
       resetSchool(); 
      } else { 
       newDay(); 
      } 
      for(int j = 0; j < 5; i++){ 
       //randomGirl() is where my error happens 
       Girl leader = randomGirl(); 
       used.add(leader); 
      } 
     } 
    } 
    /*Below are the two methods where I suspect the error may originate from */ 
    public static void resetSchool(){ 
     school.clear(); 
     for(int i = 0; i < 15; i++){ 
      //System.out.println("ran"); 
      school.add(new Girl(i)); 
     } 
     for(Girl g : school){ 
     ArrayList<Girl> classmates = new ArrayList<Girl>(); 
     for(int i = 0; i < 15; i++){ 
      if(i!= g.getID()){ 
       classmates.add(new Girl(i)); 
      } 
     } 
     g.setClassmates(classmates); 
    } 
} 

public static Girl randomGirl(){ 
    return school.remove(0); 
} 

ありがとう、私は助けていただきありがとうございます!

+2

このコードはコンパイルされていないようです。これは実際のコードですか?そうでない場合は、コミュニティに実際のコードを提供することによって自分自身を助けてください。本当にあなたが直面しているバグではないバグを追跡しないようにしてください。 :)例えば、あなたは閉じた中括弧なしのforループを持っていて、閉じたコメントなしで半分のコードをコメントし始めました。ここで何が起こっているのかを伝えるのは本当に難しいことです。 – jmort253

答えて

1

あなたが終わることはありませんループ

for(int j = 0; j < 5; i++) 

を持っているあなたはi代わりのjをインクリメントする方法を参照してください。これは、randomGirlを呼び出し続けることを意味し、呼び出されるたびにリストからGirlを削除します。だからしばらくして(15回)リストが空になり、まだrandomGirlが呼び出された場合、例外が発生する

関連する問題