读取 JAVA 中的文件,equals 不起作用

Reading a file in JAVA , equals doesn't work

我有一个 txt 文件并阅读了它。 这就是它所说的:

CONTRACT
{
    CODE 1
    SERVICE "Pro"
    NAMESURNAME "Takis Papadopoulos"
    PHONENUMBER 6980021739
    DATE "19/3/2007"
    TYPE Internet
    DISCOUNT 10
    MONTHLY_USAGE{
        MB_USED 200
    }
}

我创建了一个 BufferedReader 并使用了 line=read.readLine() 方法。但是问题是,当涉及到这段代码时:

if(line.trim().startsWith("SERVICE ")){                                    
    tmp_service = line.trim().substring(8);
    System.out.println(tmp_service);//Prints "Pro"

    if(tmp_service.equals("Pro")){
        System.out.println("1");//Never gets in
    }else if(tmp_service.equals("Internet Family")){
        System.out.println("2")
    }else{
        System.out.println("3");//Prints this
    }
    count++;
    System.out.println(tmp_service);//Prints "Pro"
}

它总是打印“3”,即使 equals 应该是 "true" 但事实并非如此。我也试过 "startsWith()" 但它也不起作用。

您的文本中有引文,因此您需要将它们包含在支票中

 if(tmp_service.equals("\"Pro\"")){

我认为更好的解决方案是删除所有“””,如果您预计会出现很多次,那么概括您的案例总是更好

您尝试将“"Pro"”与 'Pro' 进行比较。不要忘记 转义 引号。

在Java中,转义字符为反斜杠(\)。

您的解决方案:if(tmp_service.equals("\"Pro\""))

Source Java SE doc : 以反斜杠 (\) 开头的字符是转义序列,对编译器具有特殊含义。 [...] 当在 print 语句中遇到转义序列时,编译器会相应地解释它。例如,如果要将引号放在引号内,则必须在内部引号上使用转义序列 \"。 打印句子

She said "Hello!" to me.

你会写:

System.out.println("She said \"Hello!\" to me.");