初学者Java问题(字符串输出)

时间:2010-09-15 02:34:14

标签: java

所以我正在从一个文件中读取输入,该文件说明了以下几行:

       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。我怎么能这样做?

5 个答案:

答案 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"))