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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 熊亮 中级黑马   /  2013-9-21 20:43  /  1835 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 熊亮 于 2013-9-21 22:08 编辑
  1. package Day19_IO流;
  2. import java.io.*;
  3. public class L15_ReadIn {
  4.         public static void main(String[] args)throws IOException
  5.         {
  6.                 InputStream in =System.in;
  7.                 StringBuilder sb = new StringBuilder();
  8.                 while(true)
  9.                 {
  10.                         int ch = in.read();
  11.                         if(ch=='\r')
  12.                                 continue;
  13.                         if(ch=='\n')
  14.                         {
  15.                                 String s = sb.toString();
  16.                                 if("over".equals(s));
  17.                                         break;
  18.                                 System.out.println(s.toUpperCase());// 这句代码在myeclipse中报错
  19.                                 sb.delete(0, sb.length());
  20.                         }
  21.                         else
  22.                                 sb.append((char)ch);
  23.                 }
  24.         }
  25. }
复制代码
这是原封不动,老毕视频19-15 读取键盘录入的演示代码
错误提示:Unreachable code


评分

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

查看全部评分

7 个回复

倒序浏览
本帖最后由 路边小色狼 于 2013-9-21 20:54 编辑
  1. import java.io.*;
  2. public class oo {
  3.         public static void main(String[] args)throws IOException
  4.         {
  5.                 InputStream in =System.in;
  6.                 StringBuilder sb = new StringBuilder();
  7.                 while(true)
  8.                 {
  9.                         int ch = in.read();
  10.                         if(ch=='\r')
  11.                                 continue;
  12.                         if(ch=='\n')
  13.                         {
  14.                                 String s = sb.toString();
  15.                                 if("over".equals(s));
  16.                            
  17.                                 System.out.println(s.toUpperCase());// 这句代码在myeclipse中报错
  18.                                 sb.delete(0, sb.length());
  19.                         }
  20.                         else
  21.                                 sb.append((char)ch);
  22.                 }
  23.         }
  24. }
复制代码
问题出在break
break执行了就结束了。
那句话没用了,所以报错
回复 使用道具 举报
我看错了,忘了。再去看下视频好了{:soso_e113:}
回复 使用道具 举报
    if("over".equals(s));

你在if后面加了分号。怪不得会跳出。太粗心了{:soso_e120:}

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 狼人→浪人 于 2013-9-21 21:17 编辑

if(true);//后面的分号表示if已经结束,相当于
if(true){}


在if for  while ...中只要遇到break、continue、return这三个关键字,关键字下面到第一“}”上面的代码都不会被执行,同时工具提醒编译报错!

例如:
while(true){

return false;  // 或者break 、continue
//这里的代码不会被执行,如果你在这里写代码会编译报错
}

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 张云飞 于 2013-9-21 21:20 编辑
  1. if("over".equals(s));//这里多一个分号
  2.      break;
复制代码
在使用if等语句时,强烈建议无论后边跟几条语句都使用大括号“{}”,这样不仅增强代码的可读性,也可以避免类似的小错误。像这样:
  1. if("over".equals(s)){
  2.       break;
  3. }
复制代码

评分

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

查看全部评分

回复 使用道具 举报
熊亮 中级黑马 2013-9-21 22:07:50
7#
张云飞 发表于 2013-9-21 21:19
在使用if等语句时,强烈建议无论后边跟几条语句都使用大括号“{}”,这样不仅增强代码的可读性,也可以避免 ...

嗯,以后就用大括号,免得犯错。
回复 使用道具 举报
熊亮 中级黑马 2013-9-21 22:10:02
8#
路边小色狼 发表于 2013-9-21 21:03
if("over".equals(s));

你在if后面加了分号。怪不得会跳出。太粗心了 ...

{:soso_e112:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马