我正在尝试使用Scanner输入字符串。 但它问我更多的字符串:不应该用这个代码问5个字符串吗?
public void go()
{
Scanner sc=new Scanner(System.in);
ArrayList<String> list=new ArrayList<String>();
String temp=new String();
Integer i=new Integer(0);
while(sc.hasNextLine() && i<5)
{
temp=sc.nextLine();
list.add(list.size(),temp);
i++;
}
}
如果我尝试运行它,它会在控制台停止输入之前询问我6个字符串。 但是我在开始时是零,它在变为5之前增加了5次。 那么为什么当我5岁的时候它仍然存在?
解决:两种方法都解决了这个问题。
答案 0 :(得分:4)
您对代码的执行存在误解。
它会询问您6个字符串,但会将5个字符串添加到列表中。
它再次询问你一个字符串的原因是,sc.hasNextLine()
被执行,它被评估为true
,所以你看到控制台希望你输入一些东西,但是循环条件的第二部分来了: i<5
,这会被评估为false
,因此会跳过循环体,并且列表中有5个字符串。您可以通过在Eclipse或Netbeans或其他Java IDE中调试代码来查看这些内容。
为方便起见,简化了循环。从循环条件中删除sc.hasNextLine()
。
while( i < 5 )
{
temp=sc.nextLine();
list.add(list.size(),temp);
i++;
}
答案 1 :(得分:1)
如果i == 5
仍然调用sc.HasNextLine()
。维修:
while (i < 5 && sc.hasNextLine())
P.S。做int i = 0;