如何循环某种模式?

时间:2011-01-13 23:56:42

标签: java for-loop

dataValues[0][0] = dataValues_all[2];
dataValues[0][1] = dataValues_all[6];
dataValues[0][2] = dataValues_all[10];
dataValues[0][3] = dataValues_all[14];
dataValues[0][4] = dataValues_all[18];
dataValues[0][5] = dataValues_all[22];
dataValues[0][6] = dataValues_all[26];
dataValues[0][7] = dataValues_all[30];
dataValues[0][8] = dataValues_all[34];
dataValues[0][9] = dataValues_all[38];

dataValues[1][0] = dataValues_all[42];
dataValues[1][1] = dataValues_all[46];
dataValues[1][2] = dataValues_all[50];
dataValues[1][3] = dataValues_all[54];
dataValues[1][4] = dataValues_all[58];
dataValues[1][5] = dataValues_all[62];
dataValues[1][6] = dataValues_all[66];
dataValues[1][7] = dataValues_all[70];
dataValues[1][8] = dataValues_all[74];
dataValues[1][9] = dataValues_all[78];

dataValues[2][0] = dataValues_all[82];
dataValues[2][1] = dataValues_all[86];
dataValues[2][2] = dataValues_all[90];
dataValues[2][3] = dataValues_all[94];
dataValues[2][4] = dataValues_all[98];
dataValues[2][5] = dataValues_all[102];
dataValues[2][6] = dataValues_all[106];
dataValues[2][7] = dataValues_all[110];
dataValues[2][8] = dataValues_all[114];
dataValues[2][9] = dataValues_all[118];

我尝试了这个,但它没有用

/*for(int k=0; k<3; k++){

for(int u=0; u<10;u++){

for(int t=2; t<120; t=t+4){ 

dataValues[k][u] = dataValues_all[t]; }}}*/

6 个答案:

答案 0 :(得分:3)

for (int k = 0; k < 3; k++) {
    for (int u = 0; u < 10; u++) {
        dataValues[k][u] = dataValues_all[2 + (k * 40) + (u * 4)];
    }
}

答案 1 :(得分:2)

int t = 2;
for (int k = 0; k < 3; k++)
    for (int u = 0; u < 10; u++) {
        dataValues[k][u] = dataValues_all[t];
        t = t + 4;
    }

它能解决你的问题吗?

答案 2 :(得分:2)

一个循环也可以:

for (int i = 0; i < 30; i++) 
    dataValues[i / 10][i%10] = dataValues_all[i*4+2];

一点澄清:

  

i/3是整数除以3,因此它生成0,0,0,1,1,1,2,2,2,...

     

i%3返回由除以3得到的休息,因此它给出:0,1,2,0,1,2,0,1,2

答案 3 :(得分:1)

for(int k=0; k<3; k++)
  for(int u=0; u<10;u++)
    dataValues[k][u] = dataValues_all[k*40 + u*4 + 2];

答案 4 :(得分:1)

如果这样的嵌套循环不能正常工作,那么在调试时你可以做的最好的事情就是打印掉循环变量的值,看看它们是否符合你的期望。例如:

for(int k=0; k<3; k++) {
    for(int u=0; u<10;u++) {
        for(int t=2; t<120; t=t+4) {
            dataValues[k][u] = dataValues_all[t];
            System.out.println("k = " + k + ", u = " + u + ", t = " + t);
        }
    }
}

看看它做了什么。这几乎肯定会告诉你问题所在。

或者,使用调试器并逐步观察这些变量。

编辑:其他人给你的答案看起来正确;我的目的是描述如何在将来调试类似的情况,而不仅仅是给你一个特定的问题答案。我希望你觉得它很有用!

答案 5 :(得分:0)

为了使您的解决方案能够工作,在单个循环中必须增加两个变量(u和t)。您正在为每个循环执行单独的循环,这会导致迭代看起来像这样。

dataValues[0][0] = dataValues_all[2];
dataValues[0][0] = dataValues_all[6];
dataValues[0][0] = dataValues_all[10];
dataValues[0][0] = dataValues_all[14];
dataValues[0][0] = dataValues_all[18];
dataValues[0][0] = dataValues_all[22];

上面发布的代码(由Marc-Francois提供)看起来是解决问题的正确方法。

相关问题