2

我正在尝试检测外部 txt 文件中的特定字符串值。在这种情况下,我试图检测 %%。

public void read(){
    while(x.hasNext()){
        String a = x.next();
        System.out.println(a);
        if(a == "%%"){
            System.out.println("Found the end");
        }
        else{
            System.out.println("No end");
        }

    }
}

它正在正确读取 x,因为它打印出文件中的单词,但它在每个单词之后都说“No end”,甚至是“%%”。我确定我在某个地方犯了一些愚蠢的错误,我只是找不到它。x 看起来像这样:苹果橙 %% 葡萄。对此的任何帮助将不胜感激。

4

3 回答 3

3

尝试

    if(a.trim().equals("%%"))
    {
        System.out.println("Found the end");
    }

这应该消除字符串末尾的任何多余空格,并确保进行良好的比较!

于 2012-07-05T13:47:02.487 回答
3

您必须String::equals()用于比较,但不能使用 operator ==。在您的情况下,==运算符会比较 String 的地址位置和字符串文字%%

于 2012-07-05T13:44:18.737 回答
1

您应该使用equalsmethod 而不是==which check for reference 使用逻辑平等。

if(a.equals("%%")){
        System.out.println("Found the end");
    }
    else{
        System.out.println("No end");
    }
于 2012-07-05T13:46:12.913 回答