我正在尝试从文件中获取信息(它将用作设置文件,true或false值),使用以下代码:
File information = new File(aPath + "/plugins/ArenaCraft/info.acs");
ArrayList<String> info = new ArrayList<String>();
BufferedReader br = new BufferedReader(new FileReader(information));
String line;
while((line = br.readLine()) != null) {
String[] sLine = line.split(":");
if(sLine[1] == "true"){
info.add("true");
}
if(sLine[1] == "false"){
info.add("false");
}
if(sLine[1] == null){
System.err.println("[ArenaCraft] sLine[1] is NULL.");
}
if(sLine[1] != "true" && sLine[1] != "false" && sLine[1] != null){
System.err.println("[ArenaCraft] sLine[1] is not NULL, but it's not \"true\" or \"false\".");
System.err.println("[ArenaCraft] sLine[1] is: " + sLine[1]);
}
}
br.close();
return info;
然而,这是输出
[ArenaCraft] sLine[1] is not NULL, but it's not "true" or "false".
消息。然后它确切地输出
[ArenaCraft] sLine[1] is: true
所以,我不明白为什么它说它不是空或真或假。 你们想象为什么会这样吗?
我正在尝试阅读的文件内容没有编码,请按照:
notices:true
,仅此而已。
非常感谢任何帮助,提前谢谢。
答案 0 :(得分:1)
您使用a==b
代替a.equals(b)
请参阅:Java String.equals versus ==。
答案 1 :(得分:1)
嗯,==运算符比较引用。你想在这里使用equals()方法:
if (sLine[1].equals("true")) {
[...]
}
此外,您应该使用String.trim()方法,以确保字符串中没有前导或尾随空格。像这样的一行:param = true
会用你的代码解析为“true”,这不等于“true”。
if (sLine[1].trim().equals("true")) {
[...]
}
答案 2 :(得分:1)
一般来说,改变:
if (cond1) { ... }
if (cond2) { ... }
if (cond3) { ... }
if (!cond1 && !cond2 && !cond3) { .... }
到
if (cond1) { ... }
else if (cond2) { ... }
else if (cond3) { ... }
else { ... }
在最多其中一个条件可以为真的情况下,例如在您的示例中。
答案 3 :(得分:0)
使用equals()
方法进行字符串内容比较,==
进行字符串引用比较