所以我运行了这段代码
String line = worldRead.readLine();
String[] aLine = line.split("");
for (int i = 0; i < aLine.length; i++){
System.out.println(aLine[i]);
if(aLine[i] == "0"){
System.out.println("Its an 0");
}
}
并且它打印文件的第一行,因为它应该一个字符,但if语句不起作用,我查看了de bugger并且它表示当时aLine[i]
的值是“0”。我不明白这种奇怪的行为。这是为什么?
答案 0 :(得分:3)
使用if(aLine[i].equals("0"))
==
检查对象,equals
比较值
答案 1 :(得分:3)
if(aLine[i] == "0"){
System.out.println("Its an 0");
}
永远不要将字符串与==
进行比较。使用equals
方法。
if(aLine[i].equals("0"){
System.out.println("Its an 0");
}
为什么?
好吧,使用==
运算符实际上会检查这两个对象是否是相同的对象。您正在测试的是这些对象中的值。
答案 2 :(得分:0)
使用equals
方法进行字符串比较。
==
不会比较字符串对象的字符串值,只检查引用相等性。
在这方面,如果比较两个具有相同值的字符串对象,它们就不等于==
运算符。
String line = worldRead.readLine();
String[] aLine = line.split("");
for (int i = 0; i < aLine.length; i++){
System.out.println(aLine[i]);
if(aLine[i].equals("0")){
System.out.println("Its an 0");
}
}
现在应该可以了。
答案 3 :(得分:0)
正如其他人所说,Java中的字符串比较应该使用.equals()
而不是==
来完成。后者只检查对象标识,Java中的两个String
对象可以具有相同的值而不是同一个对象。在这种情况下,由于您的字符串保证长度为一个字符,因此您可以使用==
比较字符。您还可以使用增强的for
循环来简化代码:
String line = worldRead.readLine();
for (String s : line.split("")){
System.out.println(s);
if (s.charAt(0) == '0') { // or s.equals("0")
System.out.println("Its an 0");
}
}
答案 4 :(得分:0)
正如StinePike所说,使用equals()
代替==
。
两个字符串对象不一样,但相等!