【问题标题】:Why my Java while loop iterates half times [duplicate]为什么我的 Java while 循环迭代了一半[重复]
【发布时间】:2019-02-23 21:50:55
【问题描述】:
//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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        这段代码:

        x = inputStream.readLine()
        

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

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

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

        System.out.println(x);
        

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

        【讨论】:

          猜你喜欢
          • 2021-09-07
          • 2017-02-12
          • 1970-01-01
          • 2012-10-01
          • 1970-01-01
          • 2014-01-25
          • 2013-09-08
          • 1970-01-01
          • 2021-05-29
          相关资源
          最近更新 更多