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