当用户输入pBreak
时,它应该打破while循环。但是,这不起作用,我很困惑为什么。有人可以帮帮我吗?
package main;
import java.io.*;
import java.util.*;
public class TextFiles {
public static void main(String[] args) {
try {
BufferedWriter out = new BufferedWriter(new FileWriter("file.txt"));
Scanner input = new Scanner(System.in);
while (true) {
String line = input.next();
if (line == "pBreak") {
break;
}
out.write(line);
out.newLine();
}
out.close();
} catch (IOException e) {
System.out.println("Error!");
}
}
}
答案 0 :(得分:2)
使用equals
代替==
。考虑一下,null-safe equals
if ("pBreak".equals(line)) {
答案 1 :(得分:0)
此代码也可以使用:
if (line.equals("pBreak")) {
break;
}
答案 2 :(得分:0)
==
运算符将比较两个操作数的引用。
由于line
变量是不同的字符串对象的引用,因此在比较时它与字符串文字常量引用pBreak
不匹配。
if (line .equals("pBreak")) {
break;
}
因此必须使用equals()方法来比较字符串。enter code here
答案 3 :(得分:0)
变化:
if (line == "pBreak") {
到
if (line.equals("pBreak")) {
==
比较对象引用,.equals(String)
比较String 值。