2017-05-05 94 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 
}