输入特定字符串时,循环不会中断

时间:2013-11-30 03:26:02

标签: java string string-comparison

当用户输入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!");
        }
    }
}

4 个答案:

答案 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