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

时间:2017-05-16 13:03:02

标签: java file equals

我有一个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()”,但它也不起作用。

2 个答案:

答案 0 :(得分:7)

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

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

我认为更好的解决方案是删除所有'''如果你期望有很多事件,那么总是更好地概括你的案例

答案 1 :(得分:1)

您尝试将“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.");