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

本帖最后由 石好强 于 2012-4-14 15:36 编辑


  1. import java.io.*;
  2. class ReadIn
  3. {
  4. public static void main(String[] args) throws IOException
  5. {
  6. InputStream in = System.in;
  7. StringBuilder sb = new StringBuilder();
  8. int ch = 0;

  9. while((ch = in.read())!=-1)
  10. {
  11. if(ch=='\r')
  12. continue;
  13. if(ch=='\n')
  14. {
  15. System.out.println(sb.toString().toUpperCase());
  16. sb.delete(0,sb.length());
  17. }
  18. else
  19. sb.append((char)ch);

  20. String s = sb.toString();
  21. if("over".equals(s))       //此处写成 "over"==s   为什么不行,按说都是比较的字符串的内容啊
  22. break;     //我写的这个和老师写的位置不同,按说这个是在判断回车前边运行,也就是只要输入over 不用回车程序就应该结束。
  23.               //但事实是,还是需要回车才能结束程序。有人能帮忙解释下原因么?
  24. }

  25. in.close();

  26. }
  27. }
复制代码
2个疑问,都在代码上注释了,希望能给解释下。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

5 个回复

倒序浏览
没人回答啊,都沉掉了...我自己顶下
回复 使用道具 举报
.==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同。
基本类型没有equals方法,equals只比较值(对象中的内容)是否相同(相同返回true)。
希望对你有用

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
你while的循环体出口的条件是if(ch=='\n'),那当然要点击回车键才能结束程序呀。看清楚循环的条件。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
String类不支持==运算符,另外,一般面向对象的程序设计都通过接口实现操作。
代码里判断输入内容是否是“over”,那得先把输入内容读到后才能拿来判断,按回车键后输入才算结束,read才能读到内容并返回。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
陈扬 发表于 2012-4-14 17:35
你while的循环体出口的条件是if(ch=='\n'),那当然要点击回车键才能结束程序呀。看清楚循环的条件。 ...

break就已经跳出循环了。不过这里需要回车才算一个输入结束。内部原理不是很清楚,哈哈
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马