为什么我的扫描仪只能拿两个数字? Java的

时间:2013-09-13 20:44:29

标签: java input

我正在尝试使用Scanner对象来读取键盘输入(双重类型数字)。该程序编译,但它只能采取两个数字。下面是我的代码,请帮我找原因。谢谢!

    public static void main(String[] args)
    {
        Scanner keyboard = new Scanner(System.in);
        ArrayList<String> container = new ArrayList<String>();
        double number = 0;

        System.out.println("Type in the polynomials in increasing powers:");

        while (!keyboard.nextLine().isEmpty())
        {           
//          number = keyboard.nextDouble();
            try {
                     number = keyboard.nextDouble();
            } catch(Exception e)              // throw exception if the user input is not of double type
            {
                System.out.println("Invalid input");
            }


            container.add("-" + number);

        }

1 个答案:

答案 0 :(得分:2)

中的方法调用nextLine()
while (!keyboard.nextLine().isEmpty())

将使用您输入的第一个double值。此

number = keyboard.nextDouble();
然后

将使用第二个。

当循环再次迭代时,keyboard.nextLine()将消耗它将trim()的行尾字符的尾端。因此isEmpty()将返回true

解决方案如果您想输入一个数字,请按回车键,然后输入数字就是将该行读作String并使用Double.parseDouble(String)获取double值。< / p>

否则,您也可以使用

while (keyboard.hasNextDouble()) {
    number = keyboard.nextDouble();
    System.out.println(number);
    ...
}

然后在一行用空格分隔

上输入您的数字
22.0 45.6 123.123123 -61.31 -

在末尾使用随机的非数字字符来告诉它输入已完成。以上打印

22.0
45.6
123.123123
-61.31

并停止。