为什么我的Java while循环迭代了一半[重复]

问题描述 投票:1回答:3
//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);时,它会提供它应该做的输出。有谁知道这是什么问题。感谢帮助

java loops for-loop
3个回答
0
投票

每次调用inputStream.readLine()时,您都会读取一行并将文件指针前进到下一行,因为您执行了两次,一次在while loop标题中,一次在打印时,只打印每一行。打印x代替

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

0
投票

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


0
投票

这段代码:

x = inputStream.readLine()

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

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

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

System.out.println(x);

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

© www.soinside.com 2019 - 2024. All rights reserved.