我正在尝试使用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);
}
答案 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
并停止。