从表中取出每3个元素的集合(java)

时间:2016-04-26 15:19:22

标签: java

我想从表中获取每3个元素的集合,然后将它们用于某些计算。让我们说我的桌子很大,例如1000多个元素。 Tab元素类似于{x1,y1,z1,x2,y2,z2,...}。 我想采用前三个元素,用它们做一些计算,接下来的三个元素等等。

到目前为止,这是我的代码:

    double x=0;
    double y=0;
    double z=0;

    for (int i =0; i<tab.length; i++) 
        x= (double)tab[i];
            for (int j =0; j<tab.length; j+=2) 
            y= (double)tab[j];  
                for (int k =0; k<tab.length; k+=3) 
                z= (double)tab[k];      

                deathstar(x, y, z);

这仅使用tab中的最后3个元素,而死星是仅对最后3个元素进行的打印计算。我正在玩{},但它并没有给我我想要的结果。任何人都有任何坚实的想法如何从我的桌子中取出每3个元素? tab是在此代码之外定义的,类型为int[]

提前感谢您对特定问题的任何想法。

4 个答案:

答案 0 :(得分:0)

丢失循环的增量部分并在每个元素获得后递增。

for (int i =0; i<tab.length;) {
    X=(double)tab[i++];
    Y=(double)tab[i++];
    Z=(double)tab[i++];
    //do something
}

答案 1 :(得分:0)

    for (int i =3; i<tab.length; i+=3){ 
     tab[i-1]
     tab[i-2]
     tab[i-3]
     }

也许这种方法可以帮助你

答案 2 :(得分:0)

这将一次抓取三个连续元素,然后进行计算。还要检查以确保它不会超出界限。

double x=0;
double y=0;
double z=0;
int j = 1;
int k = 2;
for (int i =0; i<tab.length; i++) 
  { 
   if(i + j < tab.length && i + k < tab.length){ 
    x= (double)tab[i];
    y= (double)tab[i + j];  
    z= (double)tab[i + k];      
    deathstar(x, y, z);
    }

  }

答案 3 :(得分:0)

您在最后{之后错过了for,因此deathstar仅在所有循环完成后调用。最好为每个for循环使用{。您可以使用调试器轻松找到它。

接下来,你会问到逻辑有什么问题以及为什么你没有得到预期的结果,因为现在你会得到deathstar(x1,y1,z1), deathstar(x1,y1,z2),...。请尝试以下方法(注意:我假设tab的长度确实是3的倍数):

for(int i = 0; i < tab.length; i += 3) {
  x = tab[i];
  y = tab[i+1];
  z = tab[i+2];
  deathstar(x, y, z);
}

这样您的代码看起来更清晰。