这是我的第一篇文章。我是 Java 初学者。
我正在尝试使用 BufferedReader 读取文本文件。我想做的是,它应该只读取以“U”开头的行(我想忽略以“#”开头的行)。
String line = "";
// reader is BufferedReader
while (((line = reader.readLine()) != null) && (line.charAt(0) == 'U')) { // make sure only lines starting with 'U' are read
Variant variant = new Variant(line);
variants.add(variant); // list of Variant objects
}
当我执行此命令时,我得到一个空列表作为输出。
但是当我尝试这个时,
String line = "";
// reader is BufferedReader
while (((line = reader.readLine()) != null) ) { // make sure only lines starting with 'U' are read
System.out.println("Char at 0: " + line.charAt(0));
Variant variant = new Variant(line);
variants.add(variant); // list of Variant objects
}
果然,它在屏幕上打印了“U”,但我也得到了不以“U”开头的行作为输出。
为什么会发生这种情况?是因为我试图为“line”分配一些值并根据同一表达式中的某些条件检查它吗?
最佳答案
不要尝试将所有逻辑放入while
条件中。另外,您可以使用String.startsWith(String)
(如果您确实愿意,也可以使用charAt(0)
);但类似的东西,
String line;
// reader is BufferedReader
while (((line = reader.readLine()) != null)) {
if (line.startsWith("#")) {
continue;
} else if (line.startsWith("U")) {
Variant variant = new Variant(line);
variants.add(variant); // list of Variant objects
}
}
或
String line;
// reader is BufferedReader
while (((line = reader.readLine()) != null)) {
if (line.startsWith("U")) {
Variant variant = new Variant(line);
variants.add(variant); // list of Variant objects
}
}
关于java - While with Buffered reader 中的两个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41781442/