我对Java很新,并且获得用户输入很难,而且老师并没有真正解释它,我使用的所有资源都没有帮助解决我的问题:
我正在尝试编写一个简单的程序,继续读取用户输入并将其存储在队列中( - >程序实际上是什么),直到输入某个String。首先它需要两个字符串然后两个双打。第一次一切正常但由于某种原因第二次迭代它跳过第二个String输入并直接进入第一个双输入。
以下是一个示例代码:
System.out.print("Enter first string: ");
while(!line.equals("-") && scanner.hasNext())
{
line = scanner.nextLine();
if(!line.equals("-"))
{
a.offer(line);
System.out.print("Enter second string: ");
if(scanner.hasNextLine())
{
line = scanner.nextLine();
b.offer(line);
}
System.out.print("Enter first double: ");
double tmp = scanner.nextDouble();
c.offer(tmp);
System.out.print("Enter second double: ");
tmp = scanner.nextDouble();
d.offer(tmp);
}
System.out.print("Enter first string: ");
}
到目前为止,我只在C语言中编程,并且在那里获得用户输入更容易。那么我做错了什么?
编辑:它被标记为Skipping nextLine() after using next(), nextInt() or other nextFoo() methods的副本 我看了一下,在那个问题中,问题是由于使用了.nextInt(),最后的换行符没有消耗掉。但我使用的是.nextLine(),它应该使用换行符,所以我仍然不知道为什么会发生这种情况。