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

时间:2019-02-23 21:50:55

标签: java loops for-loop

//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 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这段代码:

x = inputStream.readLine()

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

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

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

System.out.println(x);

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

答案 2 :(得分:0)

每次调用inputStream.readLine()时,您都会读取一行并将文件指针前进到下一行,并且由于执行了两次,因此在while loop标头中一次,在打印时一次,然后每隔一行打印。改为打印x

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