这段代码为什么有这样的问题?
代码如下:
for (int i=0;i<8;i++)
   for(int j=0;j<8;j++)
   {
      char c=' ';
      System.out.println("INPUT:");
      try{
         c=(char)System.in.read();
       }catch(
IOException e){}
      if(c=='1')
      {
        System.out.print(OK!);
       }
       else  
         j--;
    }
编译运行时,第一次出现一次INPUT,输入一个字符后出现三个INPUT,为什么?
------解决方案--------------------我来分析一下
public static void main(String[] args) {
      for (int i=0;i <8;i++)  
          for(int j=0;j <8;j++)  
              {  
		  char c= ' ';  
	          System.out.println("INPUT:"); a
	          try{  
		       c=(char)System.in.read(); b[color=#FF99CC][/color]
		     }catch(IOException e){}  
		  if(c== '1')  
	             {  
		       System.out.print("OK!"); c[color=#FF6600][/color]
		     }else 
		   j--; //感觉这个地方是写错了吧
	        }
}
函数执行到a时,首先输出了INPUT,然后接受键盘输入,接下来的处理过程是:
   1.假设我们输入的字符是 2,肯定还有一个enter;实际上是两个键,程序运行如下:
      1.1  读入'2',此时输出一个 INPUT ;
     1.2  读入enter,此时输出一个 INPUT;
      1.3  执行循环到b处,等待输入,此过程又输出一个 INPUT;
      程序结果是三个 INPUT
   2.假设我们输入的字符是 1,也要有enter;仍旧是两个键,程序运行如下:
      2.1  读入'1',此时输出一个 INPUT ;
     2.2  判定是'1',输出一个 OK!;
     2.3  读入enter,此时输出一个 INPUT;
      2.4  执行循环到b处,等待输入,此过程又输出一个 INPUT;
      程序结果是三个 OK! INPUT: INPUT: INPUT:
    3.假设输入enter;是一个键,程序运行如下:
      3.1  读入enter,此时输出一个 INPUT;
      3.2  执行循环到b处,等待输入,此过程输出一个 INPUT;
      程序结果是 INPUT: INPUT:
    lz不清楚问题的所在就是对IO上概念不够清晰,我也遇到过类似的问题,希望能对你有所帮助。
    ps:我是菜鸟,共同学习
------解决方案--------------------结果:
INPUT:
1
OK!INPUT: -------A
INPUT:    -------B
INPUT:    -------C
输入1,成功读到1,所以打印出OK
AInput读到的是\r,所以继续循环
BInput读到的是\n,继续循环
CInput停止不动,等待键盘输入。
这个程序没什么意思呀。