【问题标题】:Java conditional loopJava 条件循环
【发布时间】:2020-01-23 13:34:07
【问题描述】:

我试图循环一个对象,直到满足一个条件。

例如:

Input input = new inputFile(fileName);
input.nextMove();  // returns the next line - EOF returns null

所以我想做这样的事情:

for (int[] move = input.nextMove(); move != null) {
    System.out.println(Arrays.toString(move));
}

I.E.循环直到文件结束。

问题

循环对象的最佳方式是什么?

【问题讨论】:

  • 对于初学者来说,for 循环有 3 个组件。这意味着两个分号。每个组件都允许为空。
  • 不相关:类名应该是 CamelCase,所以 InputFile ;-) ... 一个整数数组代表一个 Move。可能那东西可能是它自己的类....

标签: java loops for-loop while-loop


【解决方案1】:

这是一个典型的Iterator 模式

while(iterator.hasNext()) {
    T element = iterator.next();
}

根据您的情况,可以调整为

int[] move;
while((move = input.nextMove()) != null) {
    System.out.println(Arrays.toString(move));
}

【讨论】:

    【解决方案2】:

    嗯,你可以的

    int[] line;
    while ((line = input.nextMove()) != null) { ... }
    

    假设nextMove() 返回int[]

    此构造将nextMove() 的结果分配给line,然后在while 正文中可用。您在此处看到,这样的赋值可以用作产生值的表达式,因此可以进行比较。在这种情况下,如果linenull,则循环中断。

    【讨论】:

    • 你不能在while表达式中做int[] line。您需要先声明它。见安德鲁的回答。
    • 没问题。我实际上犯了同样的错误,但我在发布答案之前将其粘贴到我的 IDE 中并意识到我的错误!
    猜你喜欢
    • 2016-03-30
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2020-11-03
    • 2015-09-29
    • 1970-01-01
    相关资源
    最近更新 更多