A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴亨 黑马帝   /  2011-12-14 12:09  /  1965 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为何输入"bye"时,程序并没有结束?

class TestString {
         public static void main (String[] args) {
                int ch = 0;
                byte[] array1 = new byte[1024];
                int pos = 0;
                String str = null;
                System.out.println("please input your char:");
                while(true) {
                        try{
                        ch = System.in.read();
                        }
                        catch(Exception ex) {}
                  switch(ch) {
                          case '\r':
                                  break;
                          case '\n':
                          {

                                  str = new String(array1,0,pos);
                                  pos = 0;

                                  System.out.println(str);
                                   if(str.equalsIgnoreCase("bye"))
                                       return;

                   }
                          default:
                                  array1[pos++] = (byte)ch;
                  }
                }
}
}

7 个回复

倒序浏览
王冀 黑马帝 2011-12-14 12:19:56
沙发
  1. class TestString {
  2.          public static void main (String[] args) {
  3.                 int ch = 0;
  4.                 byte[] array1 = new byte[1024];
  5.                 int pos = 0;
  6.                 String str = null;
  7.                 System.out.println("please input your char:");
  8.                 while(true) {
  9.                         try{
  10.                         ch = System.in.read();
  11.                         }
  12.                         catch(Exception ex) {}
  13.                   switch(ch) {
  14.                           case '\r':
  15.                                   break;
  16.                           case '\n':
  17.                           {

  18.                                   str = new String(array1,0,pos);
  19.                                   pos = 0;

  20.                                   System.out.println(str);
  21.                                    if(str.equalsIgnoreCase("bye"))
  22.                                        return;
  23.                         break;  //这里缺少了break
  24.                    }

  25.                           default:
  26.                                   array1[pos++] = (byte)ch;
  27.                   }
  28.                 }
  29. }
  30. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 熊明春 于 2011-12-14 12:30 编辑

V1.0——判断是否等于bye那句代码少个break;
V2.0——唉,动作慢了,代码看了看,想一想,差个break,编辑,发表回复,刷新,有人抢先一步了{:soso_e127:} )
回复 使用道具 举报
在匹配换行\n的地方,加上break;跳出来就好了
回复 使用道具 举报
class TestString {
         public static void main (String[] args) {
                int ch = 0;
                byte[] array1 = new byte[1024];
                int pos = 0;
                String str = null;
                System.out.println("please input your char:");
                while(true) {
                        try{
                        ch = System.in.read();
                        }
                        catch(Exception ex) {}
                  switch(ch) {
                          case '\r':
                                  break;
                          case '\n':
                          {

                                  str = new String(array1,0,pos);
                                  pos = 0;

                                  System.out.println(str);
                                   if(str.equalsIgnoreCase("bye"))
                                       return;
                                    break;  //加上就可以了
                   }
                          default:
                                  array1[pos++] = (byte)ch;
                  }
                }
}
}

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
switch语句使用时,一般需适当的加上“break;”语句
  1. switch(i)
  2. {
  3.         case 1:
  4.         语句;break;
  5.         case 2:
  6.         case 3:
  7.         语句;break;
  8.         default:
  9.         语句;
  10. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
吴亨 黑马帝 2011-12-15 12:10:36
7#
那return不是直接让整个循环结束了吗?
回复 使用道具 举报
窦超 黑马帝 2011-12-19 22:18:25
8#
return的话就直接跳出当前方法,而break只是跳出当前循环而已
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马