2016-11-11 14 views
4

私は4つのアイテムのArrayListを持っています。私は1つのアイテムをランダムに削除し、更新されたArrayListを表示する必要があります。しかし、私のランダム配列リストの2番目と3番目の要素をターゲットにし続けます。限り、私のランダムがこのように数えると理解しています:0 1 2 3.それは私の4要素をカバーするのに十分なはずですか?同じインデックスを対象にしているのはなぜですか?私は乱数(4)+1を増やそうとしましたが、それは私を境界から外してしまいます。あなたのユーザー乱数生成は怒りがそのようなあなたの場合のように、配列の長さマイナス1に設定されているarrayListからランダムインデックスを削除します。

Random rand = new Random(); 
Scanner input = new Scanner(System.in); 
int numberOfGuests = 4; 
ArrayList<String> guestList = new ArrayList<>(4); 
System.out.println("Enter 4 guests:"); 

for(int i = 1; i <=numberOfGuests; i++){ 
    System.out.printf("guest%d: ", i); 
    guestList.add(input.nextLine()); 
} 
System.out.println("Guest List: " + guestList); 
String remove = guestList.remove(rand.nextInt(4)); 
System.out.printf("%s can't come%n" , remove); 
System.out.println("Guest List: " + guestList); 
+0

あなたのコードでは、IntelliJので局部的に私のための作品です。 –

+1

あなたのコードは私のために働く。私はあらかじめ定義された4人のゲストa、b、c、dを使ってコードを実行しました。私は10回それを実行していると、あなたはそれが動作することがわかります。リンクはここにあります:https://coderpad.io/FPNDM4CD – cullan

+1

私は悪いことを知っています。私はすべての値を得るために15以上の異なる時間を走らなければならなかった、ランダムはちょうど私がそれを走らせた最初の5回のために同じ要素を選んでいたことが起こった。 – mrKapplan

答えて

0

前年比+チェックがとしてコピー

String remove = guestList.remove(rand.nextInt(3)); 
+0

'nextInt(n)'は '0'から' n' **の排他的**までの範囲をチェックしています。したがって、あなたの答えは、正しくないインデックス「0-2」のみをチェックするだけです。そして、btw、OPはすでに彼のコードが意図どおりに機能すると言いました。 – QBrute

関連する問題