我有一个文件包含两行:
aaaaa
bbbbb
我使用这些行来读取每一行:
File f=new File("D:\\xxx.dat");
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);
String str;
String tmpp="";
while ((str = br.readLine()) != null) {
if(str=="bbbbb")
{
System.out.print(str);
}
}
但结果没什么。为什么?
答案 0 :(得分:6)
而不是
if(str=="bbbbb")
写
if(str.equals("bbbbb"))
字符串相等是初学者和其他语言程序员的常见错误。
答案 1 :(得分:1)
因为你正在使用" =="而不是等于方法。
答案 2 :(得分:1)
您正在使用==来比较字符串。
String不是基本类型,因此您应该使用.equals()
方法。
当你将两个字符串与==进行比较时,它会比较两个对象并返回false,因为它们没有指向同一个String对象(即使它们代表相同的东西)。
为了更好地理解为什么要看一下这个答案https://stackoverflow.com/a/73021/2576857,它给了IMO一个很好的解释。
答案 3 :(得分:0)
看起来您的输入文件第一行包含的不仅仅是“bbbbb”。 请检查在if之前的str的值并使用equals方法比较字符串(比较值而不是引用)