关于do While循环的问题,程序如下;
import java.io.*;
public class DoWhile
{
  public static void main(String arg[])
  {
    byte input = (byte)' ';
    boolean cont = true;
    System.out.println("请输入你想要的字符,或者输入!结束");
    do{
      try{
        input = (byte) System.in.read();
        }
        catch (Exception e)
        {
         System.out.println("对不起,你输入错误!");
        }
      if(input != (byte) '!')
        System.out.println("你输入的是"+(char) input);
      else
        {
        System.out.println("执行结束");
        cont = false;
        }  
    } while ( cont );
  }
}
如果输入 wo!程序执行结果 
你输入的是w
你输入的是o
执行结束
可是如果输入的是wo不输入!执行结果就变成:
你输入的是w
你输入的是o
你输入的是
你输入的是
看不懂最后两行 "你输入的是"  这个循环怎么这样?

解决方案 »

  1.   

    读入了Windows的回车符和换行符,因为Windows用两个字符表示一次换行,'\r'和'\n',所以读入了两个字符。System.in不宜直接使用,一般来说需要缓冲处理一下;而且,如果是读字符的话,最好先用InputStreamReader类把它改写成Reader,再读。
      

  2.   

    import java.io.*;
    public class DoWhile
    {
      public static void main(String arg[])
      {
        boolean cont = true;
        ButfferedReader b=new ButfferReader(new InputStreamrReader(System.in));
        
        System.out.println("请输入你想要的字符,或者输入!结束");
        do{
          try{
            char s=(byte)readline();
            }
            catch (Exception e)
            {
             System.out.println("对不起,你输入错误!");
            }
            char d[]=b.split("");
           for(int i=0,i<d.length;j++)
          if(d[i] != (byte)'!')
            System.out.println("你输入的是"+s);
          else
            {
            System.out.println("执行结束");
            cont = false;
            }  
        } while ( cont );
      }
    }
    不知道正确与否?:)
      

  3.   

    char s=(byte)readline();
    错了  应该是: char s=b.(byte)readline();
      

  4.   

    char s=(byte)readline();
    这句有点不懂啊?是什么意思呢?
      

  5.   

    import java.io.*;
    public class DoWhile
    {
      public static void main(String arg[])
      {
        byte input = (byte)' ';
        boolean cont = true;
        System.out.println("请输入你想要的字符,或者输入!结束");
        do{
          try{
            input = (byte) System.in.read();
            }
            catch (Exception e)
            {
             System.out.println("对不起,你输入错误!");
            }
          if(input != (byte) '\n'&&input!=(byte)'\r')
            System.out.println("你输入的是"+(char) input);
          else
            {
            System.out.println("执行结束");
            cont = false;
            }  
        } while ( cont );
      }
    }