读取 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.");
我有一个 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.");