我想从表中获取每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[]
。
提前感谢您对特定问题的任何想法。
答案 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);
}
这样您的代码看起来更清晰。