import java.io.IOException;public class Test { /**
 * @param args
 * @throws IOException 
 */
public static void main(String[] args) throws IOException {
// TODO 自动生成方法存根 int i=0;
while(i==0)
{
System.out.println("Press c to continue.");

if(System.in.read()=='c')
break;
}//while
System.out.println("c was pressed.");
}}
有这样一个程序,问从键盘输入b并按回车,屏幕上显示什么?
运行结果:
Press c to continue.
Press c to continue.
Press c to continue.可是我觉得这是一个死循环,从键盘输入b后,屏幕上只有显示一个Press c to continue.啊
为什么会有3个呢?
到底这是问什么?

解决方案 »

  1.   

    他就是一个死循环
    第一次:System.out.println("Press c to continue."); 
    然后
    在这个地方等待 System.in.read()
    然后,你们输了个b 和回车
    他执行了两次循环。
    继续等待你的输入。
      

  2.   

    不是啊,整个屏幕上是这样的:
    Press c to continue.
    b
    Press c to continue.
    Press c to continue.
    Press c to continue.
    我是问后来为什么有这么多的Press c to continue.?
      

  3.   

    System.in.read()=='c'
    read()这个方法每次只读取一个字符,而b算一个,回车算两个,所以就有三次了。
    你可以试验一下,单纯回车,会输出两次Press c to continue. 
      

  4.   

    是死循环,你用的eclipse吧,你看那个Terminate红色按钮,一直亮着,console只显示三次
      

  5.   

    恩,我用的是eclipse,Terminate红色按钮是一直亮着,但是我要问:如果read()这个方法每次只读取一个字符,那它读了b后,就应该自动过滤回车这两个字符了吧?然后输出Press c to continue. 等待下一个从键盘输入的字符啊,为什么会一下子打印了3个Press c to continue. 呢?