日期:2014-05-20  浏览次数:20785 次

求助,急!怎么用户输入若干数据.(不知道长度),存放在一个数组中
用Scanner和ArrayList线性表。用户输入数据存放进不定长的数组中,怎么做
import java.util.*;
 public class Polynomial {
    public static void main (String[]args){
    Scanner flat=new Scanner(System.in);
    ArrayList<Integer>  b=new ArrayList<Integer> ();
    while (flat.hasNext())
    b.add(flat.nextInt());
    for(int i=0;i<b.size();i++){
   System.out.println(b.get(i));
    }
 }
 }
以上代码为什么错的啊。输入数据后,没有输出。我默认用户全是输入整形数据、
 如果要按我的要求。怎么写?求大家能够给出代码 
------解决方案--------------------
加一个控制输入结束的功能,你这个程序一直处于输入状态,无法跳出while循环。例如下面的输入-1表示输入完成。

Scanner flat = new Scanner(System.in);
        ArrayList<Integer> b = new ArrayList<Integer>();
        while (flat.hasNext()) {
            int in = flat.nextInt();
            if (in == -1) {
                break;
            } else {
                b.add(in);
            }
        }
        for (int i = 0; i < b.size(); i++) {
            System.out.println(b.get(i));
        }

------解决方案--------------------
引用:
不好意思,今天才看到大家的回答。2楼的朋友给出的跳出循环语句是对的。可是我还是有个疑问:Scanner的hasNext方法不是可以判断是否有数据么?为什么是死循环啊。比如我输入:6 7 8,然后8后面没有数据了,返回false。为什么不可以跳出循环啊.......还有我想问下,这个帖子难道不可以指定对某人回复嘛...还要自己建一楼回复啊

public boolean hasNext()
Returns true if this scanner has another token in its input. This method may block while waiting for input to scan. The scanner does not advance past any input.
它会阻塞等着你输入下一个int