读取文本文件 - 在每一行的开头返回 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 +=
感谢您抽出宝贵时间阅读本文。我正在创建一个向用户打印每日报价的程序。整个程序运行良好,但是当我向用户打印引号时,他们会这样读: 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 +=