'For'循环在'For'循环中,然后是另一个循环?

时间:2013-11-03 09:26:58

标签: java

这让我很困惑,但这也很有趣!

我想循环遍历数组中9个元素的网格,将它们全部乘以1/9。然后,我想找到这9个元素的总和,并用计算为和的值替换每个单独的元素。在我完成这个之后,我想继续接下来的9个元素。 为了澄清,我希望在下面的代码中将所有9个元素更改为myVal。

到目前为止,我已经在循环位内得到了循环,但我不知道如何返回并将所有值的总和替换为每个值。这是我的代码: -

 previousx = 0; 
 previousy= 0;
for (int x = previousx; x < previousx+4; x++) {
    for(int y = previousy; y < previousy+4; y++) {
        y = y*(1/9);
        yVal += y;
      }
 }

当然,非常感谢任何建议。

2 个答案:

答案 0 :(得分:2)

请注意,yint,您可能希望拥有double类型的变量并对其执行double计算:

double myDouble;
for(int y = previousy; x < previousy+4; y++) {
   myDouble = y*((double)1/9);
   yVal += myDouble;
}

正如@ZouZou所提到的,由于Java中的数字默认值为int1/9将为0.您需要将一边强制转换为double

((double)1/9)

另一方将被隐含地施放。

另请注意,您的内部循环不会结束:

for(int y = previousy; x < previousy+4; y++) {
                       ↑
                 Should be y

答案 1 :(得分:0)

int i = 0;
int setNum = 1;
for (< exit condition >) {

    // Insert code here to find myVal
    // for current set of 9 elements

    for (; i < 9 * setNum; i++) {
        arr[i] = myVal;
    }
    setNum++;
}

编辑:如果arr是二维数组

for (int i = 0; i < arr.length; i++) {

    // Insert code here to find myVal
    // for current set of 9 elements

    for (int j = 0; j < 9; j++) {
        arr[i][j] = myVal;
    }
}