是否有人知道为什么我的nextLine()
在下面的代码中的for循环之后无法工作?它总是跳过nextLine()
并直接转到if
声明。nextLine()在for循环后不工作
int[] a = new int[3]
for(int i=0; i<3;i++)
{
a[i] = nextInt();
}
String b = nextLine();
if(b == "go")
{
.......
}
else
{
.....
}
是否有人知道为什么我的nextLine()
在下面的代码中的for循环之后无法工作?它总是跳过nextLine()
并直接转到if
声明。nextLine()在for循环后不工作
int[] a = new int[3]
for(int i=0; i<3;i++)
{
a[i] = nextInt();
}
String b = nextLine();
if(b == "go")
{
.......
}
else
{
.....
}
什么意思是不工作?你的意思是说nextLine()方法没有被调用。根据您粘贴的代码,它将100%地调用nextLine()方法。
涉及nextLine
的声明应始终在那里执行(除非抛出异常)。您不会显示nextLine
的实施。你确定它没有执行吗?分散的几个System.err.println("blah")
可能会有所帮助。
顺便说一句:字符串比较几乎可以肯定是b.equals("go")
。如果b
可能是null
,请为此明确检查或编写表达式"go".equals(b)
。
我猜你可能正在做的是要求用户输入整数,然后按回车。当它解析整数时,它只是解析和删除整数。但他们所压的换行符当然还在流中。然后,当你询问nextLine()
时,它会立即返回,因为流中已经有一行(以换行符结尾的整数)。也许你实际上期望nextLine()
在整数进入后等待另外一行,但那不是发生了什么。这是正确的吗?
我认为没有理由发生这种情况,需要更多的细节。你确定你正在运行的代码与你向我们展示的源代码是否相同? – 2009-04-30 09:44:26