for-loop - for 循环意外迭代
问题描述
我是 Java 编程的新手,正在尝试自学该语言。我想创建一个程序,该程序将在键入“s”时终止,但让我感到困惑的是我的 for 循环在输入字母后迭代了两次?
我的代码:
public class Demo {
public static void main(String[] args)
throws java.io.IOException{
int i;
System.out.println("Press s to stop: ");
for(i = 0; (char) System.in.read() != 's'; i++)
{
System.out.println("Pass #"+i);
}
}
我的结果:
我应该如何解决这个问题?
解决方案
那是因为当你按下回车键时,它\n
也会进入输入流。
因此,一次迭代是针对字母的,另一次是针对\n
字符的。
一个解决方案是:
public class Demo {
public static void main(String[] args)
throws java.io.IOException{
int i;
System.out.println("Press s to stop: ");
char c = System.in.read();
for(i = 0; c != 's'; i++)
{
if(c == '\n') continue;
System.out.println("Pass #"+i);
c= System.in.read();
}
}