2016-03-20 12 views
0

カスタマーオブジェクトを生成してArrayListに格納したいが、できなかった。ここでThreadでオブジェクトをArrayListに追加する方法

は、顧客オブジェクトを10回発生し、generateProcessTimeの方法

public class CustomerThread extends Thread { 
Customer c = new Customer(); 
Methods method = new Methods(); 

@Override 
public void run() { 

    for(int i = 1; i <= 10; i++) { 
     try { 
      //c.setCustomerID(i); 
      //c.setProcessTime(method.generateProcessTime()); 

      c.getCustomerIDList().add(i); 
      c.getProcessTimeList().add(method.generateProcessTime()); 

      System.out.println("ID : " + c.getCustomerIDList().get(i) + " - Process Time : " + c.getProcessTimeList().get(i)); 
      Thread.sleep(100); 
     } 
     catch (InterruptedException ex) { 
      Logger.getLogger(CustomerThread.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
} 
} 

ミリ秒100 2人の顧客の間で

public class Customer { 
private int customerID; 
private int processTime; 

ArrayList<Integer> customerIDList = new ArrayList<>(); 
ArrayList<Integer> processTimeList = new ArrayList<>(); 

public int getCustomerID() { 
    return customerID; 
} 

public void setCustomerID(int customerID) { 
    this.customerID = customerID; 
} 

public int getProcessTime() { 
    return processTime; 
} 

public void setProcessTime(int processTime) { 
    this.processTime = processTime; 
} 

public ArrayList<Integer> getCustomerIDList() { 
    return customerIDList; 
} 

public void setCustomerIDList(ArrayList<Integer> customerIDList) { 
    this.customerIDList = customerIDList; 
} 

public ArrayList<Integer> getProcessTimeList() { 
    return processTimeList; 
} 

public void setProcessTimeList(ArrayList<Integer> processTimeList) { 
    this.processTimeList = processTimeList; 
} 
} 

CustomerThreadクラスがランダムint型の数字を生成され、ノーがあり、私のCustomerクラスであります問題。ランキング: はここに私のテストクラス

public class Test { 
public static void main(String[] args) { 

    CustomerThread ct = new CustomerThread(); 

    ct.start(); 

} 
} 

私はこれらを実行すると、このエラーが起こるのだろう、スレッド内

例外 "スレッド0" java.lang.IndexOutOfBoundsExceptionである1を、サイズ:1

答えて

1

あなたはリスト

c.getCustomerIDList().add(i); 
に数字 1..10を追加しています

しかし、その後、あなたはインデックス1..10

c.getCustomerIDList().get(i) 

で番号を取得しようとしている。しかしリストは、あなたがあなたではなく0..9から反復して値i + 1を追加する必要がありますIndexOutOfBoundsException
を得る理由です、0からインデックス化されています

for(int i = 0; i < 10; i++) { 
    ... 
    c.getCustomerIDList().add(i + 1); 
    ... 
+0

ありがとうございました! – MrBoolean

関連する問題