import java.util.*;
import java.io.*;
public class Circle{ public static void main(String args[]){
  int i=0;
  int j=0;
  char str=' ';
  while (j<=1){
          i=0;
  while(true){
   
System.out.println("enter a char");
try{str = (char) System.in.read();
          System.out.println(i);
  System.out.println(str);
  if(i==3) break;
  i++;
   }catch(IOException e){}
 
  }
  j++;
  }
}
} 运行结果:
enter a char
a
0
a
enter a char
1               //为什么i=1 时不能输入字符呢enter a char
2              //为什么i=2 时不能输入字符呢 很迷茫 !!!
enter a char
 光标

解决方案 »

  1.   

    str = (char) System.in.read();
    第一次接受到你的输入后,
    第2次执行的时候不会等待你的输入,默认将str置为str="";
    所以第一次输入的时候输入串就行了,你输入“abcdefg”试试就明白了
      

  2.   

    PS:
    这样在内层循环是可以的
    但是 等程序再次进入内层循环时 
    会不等待输入而直接打印 i的值然后 i=3或2时才可以记录输入的字符串 
      

  3.   

    在 str = (char) System.in.read(); 后面加上一行System.in.skip(2);就可以了,因为里面缓存着回车(回车也是字符哦)的关系。
      

  4.   

    import java.util.*;
    import java.io.*;
    public class Test{
      
      public static void main(String [] args){
    //char str[] =new char[12];
    int i=0;
    int m=0;
    while(true){
    char str[] =new char[12];
    System.out.print("Enter 输入字符串并以*作为结尾 "); 
    i=0;
    m=0;
            while(true){
      try{str[i] = (char) System.in.read();
      if(str[i]=='\r'||str[i]=='\n')continue;//加上这个判断就好使了
       }catch(IOException e){}
       System.out.print(i);
       System.out.println(str[i]);
       if(str[i]=='*') {
       break  ;
       }
       i++;
      
    }//do
    }//while
    谢谢 bao110908给的提示了 
      
      
      
       
      }}