黑马程序员技术交流社区
标题:
关于IO流 in学习中关于 equals 的问题,求解答
[打印本页]
作者:
石好强
时间:
2012-4-14 14:37
标题:
关于IO流 in学习中关于 equals 的问题,求解答
本帖最后由 石好强 于 2012-4-14 15:36 编辑
import java.io.*;
class ReadIn
{
public static void main(String[] args) throws IOException
{
InputStream in = System.in;
StringBuilder sb = new StringBuilder();
int ch = 0;
while((ch = in.read())!=-1)
{
if(ch=='\r')
continue;
if(ch=='\n')
{
System.out.println(sb.toString().toUpperCase());
sb.delete(0,sb.length());
}
else
sb.append((char)ch);
String s = sb.toString();
if("over".equals(s)) //此处写成 "over"==s 为什么不行,按说都是比较的字符串的内容啊
break; //我写的这个和老师写的位置不同,按说这个是在判断回车前边运行,也就是只要输入over 不用回车程序就应该结束。
//但事实是,还是需要回车才能结束程序。有人能帮忙解释下原因么?
}
in.close();
}
}
复制代码
2个疑问,都在代码上注释了,希望能给解释下。
作者:
石好强
时间:
2012-4-14 15:38
没人回答啊,都沉掉了...我自己顶下
作者:
任杰
时间:
2012-4-14 17:13
.==可用于基本类型和引用类型:当用于基本类型时候,是比较值是否相同;当用于引用类型的时候,是比较对象是否相同。
基本类型没有equals方法,equals只比较值(对象中的内容)是否相同(相同返回true)。
希望对你有用
作者:
陈扬
时间:
2012-4-14 17:35
你while的循环体出口的条件是if(ch=='\n'),那当然要点击回车键才能结束程序呀。看清楚循环的条件。
作者:
罗旭维
时间:
2012-4-14 17:58
String类不支持==运算符,另外,一般面向对象的程序设计都通过接口实现操作。
代码里判断输入内容是否是“over”,那得先把输入内容读到后才能拿来判断,按回车键后输入才算结束,read才能读到内容并返回。
作者:
石好强
时间:
2012-4-14 18:07
陈扬 发表于 2012-4-14 17:35
你while的循环体出口的条件是if(ch=='\n'),那当然要点击回车键才能结束程序呀。看清楚循环的条件。 ...
break就已经跳出循环了。不过这里需要回车才算一个输入结束。内部原理不是很清楚,哈哈
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2