2016-11-11 83 views
4

我有一個ArrayList的4個項目。我需要隨機刪除一個項目並顯示更新後的ArrayList。然而,我的隨機保持在數組列表中的第二個和第三個元素。據我的理解,我的隨機數會像這樣:0 1 2 3.這不就足以覆蓋我的4個元素嗎?爲什麼它繼續針對相同的索引?我嘗試增加隨機數(4)+ 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在coderpad上運行了你的代碼。我正在運行它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',這是不正確的。順便說一下,OP已經表示他的代碼按預期工作。 – QBrute