所以我正在从一个文件中读取输入,该文件说明了以下几行:
NEO
You're the Oracle?
NEO
Yeah.
所以我只想输出他的实际行,而不是它所说的NEO。所以我尝试了这个:
if(line.trim()=="NEO")
output=false;
if (output)
TextIO.putln(name + ":" + "\"" + line.trim() + "\""); // Only print the line if 'output' is true
但那没有成功。它仍然打印NEO。我怎么能这样做?
答案 0 :(得分:7)
在比较Java中的字符串时,您必须使用equals()
方法。这是why。
if ( "NEO".equals(line.trim() )
答案 1 :(得分:5)
我认为您正在寻找line.trim().equals("NEO")
而不是line.trim() == "NEO"
那就是说,你可以通过代替做
来摆脱output
变量
if(!line.trim().equals("NEO"))
{
TextIO.putln(name + ":" + "\"" + line.trim() + "\""); // Only print the if it isn't "NEO"
}
答案 2 :(得分:4)
字符串是Java中的对象。这意味着你不能只使用==
运算符来比较它们,因为即使它们都代表相同的字符串,这两个对象也会不同。这就是String对象实现equal()方法的原因,该方法将比较对象的内容,而不仅仅是它们的内存地址。
<强>参考强>
答案 3 :(得分:2)
在Java中,字符串是对象。 ==
运算符检查完全相等。
换句话说
final String ans = line.trim();
final String neo = "NEO";
if (ans == neo) ...
表示您要检查 ans 和 neo 对象是否相同。它们不是,因为Java分配(实例化)了两个对象。
正如其他人所说,你必须使用为String
对象创建的方法来测试相等性,实际上,在内部,检查值是否相同。
if (ans.equals(neo)) ...
答案 4 :(得分:1)
尝试以下方法:
if(line.trim().equals("NEO"))