for循环意外迭代
for loop iterated unexpectedly
我是 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();
}
}
我是 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();
}
}