2017-05-05 71 views
-3
package hw6; 
import java.util.Scanner; 
import java.util.ArrayList; 

public class hw6q1 { 

    public static void main(String[] args) { 
     ArrayList<Integer> al = new ArrayList<Integer>(); 
     Scanner input = new Scanner(System.in); 
     System.out.println("Enter integers between 1 and 100 (enter 0 to 
stop):"); 
     while(input.nextInt() != 0){ 
      al.add(input.nextInt()); 
     } 
     input.close(); 
     for(int i = 0; i < al.size(); i++){ 
      System.out.println(al.get(i)); 
     } 



    } 

} 

這就是我的代碼,當我運行程序並給出數字1 2 3 4然後0結束循環它只打印2和4.我想知道爲什麼是這種情況以及如何修復它使ArrayList中獲取所有的號碼1 2 3和4爲什麼while循環只輸入多個2的輸入?

+0

如果你調用'nextInt()'在'while'條件,然後再** **它添加到你的列表時,你基本上扔掉了所有其他的輸入。 – QBrute

回答

1
while(input.nextInt() != 0){ 
    al.add(input.nextInt()); 
} 

你在你的手一個int,所以你進入循環,你忽略了你的手int和再抓下一個int和將其存儲在集合中。您需要先存儲第一個int並在請求下一個int之前將其存儲在ArrayList中。

例如

int num = input.nextInt(); 
while(num != 0) 
{ 
    al.add(num); 
    num = input.nextInt(); 
} 
0

每個input.nextInt()的將讀取的整數輸入。

說你的輸入流:1 2 3 4 0

while(input.nextInt() != 0) { // Reads 1    | reads 3    | reads 0 
    al.add(input.nextInt()); // Reads 2 and adds to al | reads 4 and adds to al 
}