【问题标题】:Java. Why doesn't this for loop work correctly爪哇。为什么这个 for 循环不能正常工作
【发布时间】:2012-04-01 01:48:45
【问题描述】:

我有下一个 for 循环头:

for ( int row = interval[intRow][_START_]; row <= interval[intRow][_END_]; row++ )

其中interval 的类型/维度为int[15][5],intRow 的值为1,_START_ 和_END_ 是常量,开始为0,结束为1;

interval[intRow][_START_] 返回 1,interval[intRow][_END_] 返回 2

为什么row 只跑到 1(所以只有一个循环而不是 2)?

我注意到,如果我将第二个条件或任何它称为的条件放在两个 ( ... ) 之间,那么它会起作用,它会执行两次循环。我的意思是:

for ( int row = interval[intRow][_START_]; row <= (interval[intRow][_END_]); row++ )

有没有人知道为什么会这样?我知道我可以将它们放在两个括号之间,但我想知道为什么这不起作用。

谢谢。

EDIT1

这是&lt;= 不是&lt; ...我一开始打错字了。对不起。

EDIT2

基本上这看起来像:

for ( int row = interval[1][0]; row &lt;= interval[1][1]; row++ )

interval[1][0] == 1 和 interval[1][1] == 2 的位置

【问题讨论】:

  • interval[1][0]; 和 interval[1][1]; 里面是什么?
  • 值 1 和 2 分别
  • 你确定吗?你能打印出来吗?
  • 恐怕......使用 Watch 在调试模式下检查变量......并且它们正确显示:( :D 在这里发疯。

标签: java loops multidimensional-array for-loop


【解决方案1】:

Loop1 : 1

试试

【讨论】:

  • 哈哈,对不起,它是
  • 换句话说,控制变量在循环执行后递增,并且在循环的下一次迭代之前进行评估。第一次到 1
【解决方案2】:

试过以下。

int[][] interval = new int [15][5];

int intRow = 1;
int _START_ = 0;
int _END_ = 1;

interval[intRow][_START_] = 1;
interval[intRow][_END_] = 2;

for ( int row = interval[intRow][_START_]; row <= interval[intRow][_END_]; row++ ) {

    System.out.println(row);
}

输出: 1 2

总而言之,它对我来说很好用。这让我想知道 interval[intRow][_END_] 是否设置正确。

尝试使用调试器或简单的 Sysouts 来调试您的程序。

【讨论】:

  • 我是 .. 这就是为什么我很困惑 :) 呵呵 ...我可能会错过一些东西...但我不知道是什么。 Watch 中的值似乎是合法的,它应该进入下一个循环,但事实并非如此。除非我把它放在 `(...)' 之间
  • 想不出其他原因。可能在这里粘贴“java -version”输出。
  • f 那...我把它放在括号之间...感谢您的测试 :D 值得接受 :) 哈哈
  • 能否提供您的版本详细信息?您在使用 Sun Java 吗?
【解决方案3】:

你试过写这个吗?

for ( int row = interval[intRow][_START_]; row <= interval[intRow][_END_]; row++ )

还是这个?

for ( int row = interval[intRow][_START_]; row < interval[intRow][_END_] +1; row++ )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 2018-04-07
    • 2022-10-16
    • 1970-01-01
    • 2014-10-15
    相关资源
    最近更新 更多