黑马程序员技术交流社区

标题: 【求助】奔溃了,IO键盘输入,和视频代码一样可就是不好... [打印本页]

作者: 郭阳    时间: 2012-9-27 15:50
标题: 【求助】奔溃了,IO键盘输入,和视频代码一样可就是不好...
本帖最后由 郭阳 于 2012-9-27 16:11 编辑
  1. import java.io.*;
  2. class Demo
  3. {
  4.         public static void main(String[] args) throws Exception
  5.         {
  6.                 InputStream in=System.in;
  7.                 StringBuilder sb=new StringBuilder();
  8.                 while(true)
  9.                 {
  10.                         int chs= in.read();
  11.                         if (chs=='\t')
  12.                                 continue;
  13.                         if(chs=='\n')
  14.                         {
  15.                                 String str=sb.toString();
  16.                                 if("over".equals(str) )//**************就是这一句。。输入over结束不了程序**************************
  17.                                         break;
  18.                                 System.out.println(str);
  19.                                 sb.delete(0,sb.length());
  20.                         }
  21.                         else         
  22.                                 sb.append((char)chs);
  23.                         
  24.                 }
  25.         }
  26. }
复制代码
开始还自己发挥了一下,可是发现不好用,就照着视频改,后来改到一模一样。。。还是不好用。。。真不知道到底哪里不对。。。。

作者: 孔肖    时间: 2012-9-27 16:03
  while(true)
  {
           int chs= in.read();
           if (chs=='\r')    // 注意这里是 \r,而不是 \t。在windows下的换行是\r\n,\t是制表符
                  continue;
              if(chs=='\n')
              {
                  String str=sb.toString();
                  if("over".equals(str))
                            break;
                  System.out.println(str);
                  sb.delete(0,sb.length());
                }
                else         
                 sb.append((char)chs);
  }

作者: 宫明星    时间: 2012-9-27 16:09
本帖最后由 宫明星 于 2012-9-27 16:16 编辑
  1. import java.io.*;
  2. class Demo
  3. {
  4.         public static void main(String[] args) throws Exception
  5.         {
  6.                 InputStream in=System.in;
  7.                 StringBuilder sb=new StringBuilder();
  8.                 while(true)
  9.                 {
  10.                         int chs= in.read();
  11.                         if (chs=='\t')        //这里是 '\r',而不是'\t'
  12.                                 continue;
  13.                         if(chs=='\n')
  14.                         {
  15.                                 String str=sb.toString();
  16.                                 if("over".equals(str) )//**************就是这一句。。输入over结束不了程序**************************
  17.                                         break;
  18.                                 System.out.println(str);
  19.                                 sb.delete(0,sb.length());
  20.                         }
  21.                         else         
  22.                                 sb.append((char)chs);
  23.                         
  24.                 }
  25.         }
  26. }
复制代码
因为这里面两个if语句是判断是否读到换行标志,java里面换行是\n,但是window里面是读不出来的,
为window里默认换行标志是\r\n,所以这里要先判断\r,再判断\n。
对了Unix/Linux下的换行是\n,而Mac下的换行是\r。

作者: 郭阳    时间: 2012-9-27 16:12
万分感谢。。。我看来该睡一觉了。。。。。。
作者: 吴硕    时间: 2012-9-27 17:12
这样修改,输入over就可以退出了,{:soso_e113:}

import java.io.*;
class Demo
{
        public static void main(String[] args) throws Exception
        {
                InputStream in=System.in;
                StringBuilder sb=new StringBuilder();
                while(true)
                {
                        int chs= in.read();
                        if (chs=='\t')
                                continue;
                        if(chs=='\n')
                        {
                                String str=sb.toString();
                                if("over\r".equals(str) )    //换行符\r\n中的\r每次都会添加到StringBuilder的末尾
                                        break;
                                System.out.println(str);
                                sb.delete(0,sb.length());
                        }
                        else         
                                sb.append((char)chs);
                        
                }
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2