2017-10-24 16 views
1
public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 
    ArrayList <SlotMachine> machines = new ArrayList<SlotMachine>(); 
    System.out.print("How many machines are they playing?: "); 
    int machinesNeeded = scan.nextInt(); 
    int machineCounter = 1; 
    for (int i = 0; i < machinesNeeded; i++) { 
     machines.add(new SlotMachine()); 
     System.out.print("How often does machine # " + machineCounter + " pay its jackpot?: "); 
     machines.get(i).setPayOutTime(scan.nextInt()); 
     System.out.print("How much is the jackpot for machine # " + machineCounter + ": "); 
     machines.get(i).setPayOut(scan.nextInt()); 
     System.out.print("How many times has machine # " + machineCounter + " been played since paying out?: "); 
     machines.get(i).setTimesPlayed(scan.nextInt()); 
     machineCounter ++; 
    } 

    ArrayList <Integer> machineOrder = new ArrayList<Integer>(); 
    machineOrder.add(3); 
    System.out.print("Enter machine to use: "); 
    System.out.println(machines.get(machineOrder.get(0))); 

リスト変数のmachineOrderの値をマシン値にアクセスするためのインデックスとして使用したいとします。 わからない私は、あなたがmachine.add(3)、したがって、あなたのmachine.getを追加しているあなたのコードの欠陥は、(0)は常に3を返し、あなたが追加したでしょうあります配列リストを使用して別の配列リストのインデックスを指示する

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 
+1

マシン3になるために4台のマシンが必要です。 –

+1

3つの項目を 'machines'に追加してインデックス3の項目を求めていると推測します。そうであれば、インデックス3に項目がないというエラーが表示されます。インデックスは0から2までです。 – sprinter

+0

印刷方法はいくつかの方法の中にありますか? – arjunsv3691

答えて

1

を得続ける何をすべきか3つのマシンが配列インデックスとして0から始まる最大インデックスは2で、3番目の要素にアクセスしようとしているので、java.lang.IndexOutOfBoundsExceptionが返されます。

+0

これをクリアしていただきありがとうございます – buusyboybean

関連する問題