java - While with Buffered reader 中的两个条件

标签 java while-loop bufferedreader

这是我的第一篇文章。我是 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/

相关文章:

java - 我在这个工资计算器上的数学有什么问题吗?

java 检测文件是否为UTF-8或Ansi

java.lang.IllegalStateException : Scanner closed

c - 为什么循环在输入 -1 时不会中断?

java - 读取文件,排序,写入另一个文件

java - 读取大文件(Java堆空间)

java - 生成 PNG 响应时出现错误 406 Not Acceptable

C:scanf() 和 while()(来自 C Primer Plus 的编程练习 7.10)

javascript - 尝试使用输入值打印 Javascript 数组

java - 使用 Java 从网页中读取文本