有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

为什么我的Java while循环迭代了一半

//some code here
    String x;
    while ((x = inputStream.readLine()) != null) {
        System.out.println(inputStream.readLine());
    }
    inputStream.close();
}

您好,我是Java初学者,我的while循环应该提供类似于
的输出 aaasd1
aaasd2
aaasd3
aaasd4
aaasd5
aaasd6
但是它给出了
aaasd2
aaasd4
aaasd6

当我将println更改为System.out.println(x);时,它将提供它应该提供的输出。有人知道问题出在哪里吗。谢谢你的帮助


共 (3) 个答案

  1. # 1 楼答案

    这段代码:

    x = inputStream.readLine()
    

    读取下一行并将其存储在x。但是你永远不会使用x。相反,您可以这样做:

    System.out.println(inputStream.readLine());
    

    它读取存储在x中的之后的下一行,并将其打印出来。替换为:

    System.out.println(x);
    

    这将打印出您刚才在循环条件中读取的行

  2. # 2 楼答案

    在第一个示例中,调用readLine()两次,但仅每秒打印一次值。也就是说,不会打印在while表达式中分配给x的值。使用System.out.println(x);时,打印每个值

  3. # 3 楼答案

    每次调用inputStream.readLine()时,读取一行并将文件指针前进到下一行,由于执行了两次,一次在while loop头中,一次在打印时,因此只打印第二行。改为打印x

    String x;
    while ((x = inputStream.readLine()) != null) {
        System.out.println(x);
    }
    inputStream.close();