繁体   English   中英

如何使用嵌套的for循环递增数组?

[英]How to increment an array with a nested for loop?

必须有一种更优雅的方法来执行以下操作:

for(int i = 0; i < subsets.length-10; i++) {
    sample = (int)subsets[i];
    int y = (sample
             + ((int)(subsets[i+1])) 
             + ((int)(subsets[i+2])) 
             + ((int)(subsets[i+3])) 
             + ((int)(subsets[i+4])) 
             + ((int)(subsets[i+5]))) / 6;
}

基本上,它为“子集”递增添加接下来的5个值。 如何使用嵌套的for循环使用单个公式,这意味着我可以增加它添加下一个值的次数,然后除以该次数还可以得出平均值。

就像是?:

y = (sample + ((int)(subsets[i++n]))/n

其中n是它递增地增加下一个值的次数

有任何想法吗?

样本并不特殊,它仅是i + 0,因此您不必隔离它。 你可以试试:

for(int i = 0; i < subsets.length-10; i++) {
    int y = 0;
    for(int j=i;j<i+n-1;j++) {
        y += (int)subsets[j];
    }
    y = y / n;
}

此流应为您提供所有y值:

IntStream.range(0, subsets.length - 10)
         .map(i -> Arrays.stream(subsets, 0, 6).sum() / 6);

如果可以使用IntStream.average()也可以使用IntStream.average()代替自己计算。

y = Arrays.stream(subsets, i, i+6).sum()/6;

您的嵌套循环方法是正确的。 尝试这样的事情:

for ( int i = 0; i < subsets.length - 10; i++ )
{
   sample = subsets[ i ];
   int y = sample;
   for ( int k = i; k < i + 5; k++ )
   {
      y += subsets[ k ];
   }
   y /= 6;
}
int sample;
        for (int i = 0; i < subsets.length - 10; i++) {
            sample = (int) subsets[i];
            for (int j = i; (j < i + 6) && (j < subsets.length -10); j++) {
                sample += subsets[i];
            }
            int y = sample / 6;
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM