读取文本文件 - 在每一行的开头返回 null?

Reading text files - returning null at the beginning of every line?

感谢您抽出宝贵时间阅读本文。我正在创建一个向用户打印每日报价的程序。整个程序运行良好,但是当我向用户打印引号时,他们会这样读: null真理抗拒简单。 文本文档中这些引号前没有空格。我有一种感觉,这与初始化一个变量有关,但我不确定是哪一个,或者最好如何初始化它。谢谢你的时间。

static String[] output = new String[12];
    static String file = "";
    static int counter = 0;

    public static void main(String[] args) throws IOException {
        BufferedReader fileRead = new BufferedReader(new FileReader("C:\Users\Owner\Documents\quotes.txt"));
        String fileLine = "";
        for (int i = 0; i < 12; i++) {
            fileLine = fileRead.readLine();
            if (fileLine == null) {
                break;
            }
            output[i] += fileLine;
            output[i] += "\n";
        }
        JOptionPane.showMessageDialog(null, output[counter]);
        counter++;
        fileRead.close();
        int ans = JOptionPane.showConfirmDialog(null, "Want to see another quote?", "Daily Quote", JOptionPane.YES_NO_OPTION);
        if (ans == JOptionPane.YES_OPTION) {
            do {
                JOptionPane.showMessageDialog(null, output[counter]);
                counter++;
                ans = JOptionPane.showConfirmDialog(null, "Want to see another quote?", "Daily Quote", JOptionPane.YES_NO_OPTION);
            } while (ans == JOptionPane.YES_OPTION);
            JOptionPane.showMessageDialog(null, "Thanks for using the Daily Quotation machine! Have a nice day!",
                    "Daily Quote", JOptionPane.INFORMATION_MESSAGE);
        }

    }

}

static String[] output = new String[12];

output数组的元素本来都是null。当你稍后说

output[i] += fileLine;

这导致 fileLine 附加 null,这导致空引用转换为字符串 "null" 和然后与 fileLine 连接。您可以在最小示例中看到这一点

class Foo {
  public static void main(String args[]) {
    String s = null;
    s += "foo";
    System.out.println(s);  // prints "nullfoo"
  }
}

解决方法是使用

output[i] = fileLine;  // = instead of +=