我有第二个循环的数据。
Tsum2 : [ 19 12 17 10 6 0 10... ]
Isum2 : [ 98 33 26 11 15 10 32... ]
我想要价值Tsum2
和Isum2
sum = [ (19-98)+(12-33)+(17-26)+ ... +(10-32)... ]
我该怎么办?
此代码示例
for (int d1 = 0; d1 < 360; d1++) {
Tsum10 = Tsum10 + (int) degreeT[d1];
Tcount10++;
if (Tcount10 == 10) {
Tsum2 = (Tsum10 + (int) degreeT[d1]);
Tcount10 = 0;
Tsum10 = 0;
}
}
for (int d2 = 0; d2 < 360; d2++) {
Isum10 = Isum10 + (int)degreeI[d2];
Icount10++;
if (Icount10 == 10) {
Isum2 = (Isum10 + (int)degreeI[d2]);
Icount10 = 0;
Isum10 = 0;
}
}
此代码的结果。
循环d1:
19 12 17 10 6 0 10 21 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 31 7 13 9 16 8 8 13 16
循环d2:
98 33 26 11 15 10 32 44 87 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 112 50 14 25 32 16 32 39 97
感谢。
答案 0 :(得分:1)
你的问题不清楚。我不明白为什么你在11的多个位置设置为0。 这是我理解的解决方案。
int total = 0;
for (int i = 0; i < Tsum2.length; i++) {
total += Tsum2[i] - Isum2[i]
}
答案 1 :(得分:0)
由于您从2个具有相同索引的数组中减去项目,因此您不能使用for循环并只保留运行总计。
PageTemplate
答案 2 :(得分:0)
无论数组是否具有等号大小,此解决方案都应该正常工作并阻止ArrayOutOfBoundException
。
int[] tsum2 = { 19, 12, 17, 10, 6, 0, 10};
int[] isum2 = { 98, 33, 26, 11, 15, 10, 32};
int total = 0;
for (int i = 0; i < tsum2.length || i < isum2.length; i++) {
int val1 = i < tsum2.length ? tsum2[i] : 0;
int val2 = i < isum2.length ? isum2[i] : 0;
total += val1 - val2;
}
System.out.println(total);
答案 3 :(得分:0)
您需要一个变量来保存数组的总和。
如果你想获得两个数组的总和,你可以这样做:
int sum = 0;
for(int i = 0; i < tsum2.length; i++)
{
sum = sum + (array1[i] - array2[i]);
}
此外,所有变量都应该是小写的,因为它们不是Classes。
答案 4 :(得分:0)
试试这个男人:
const int n = 6;
int[] a = { 19, 20, 21, 22, 23, 24 };
int[] b = { 1, 2, 3, 4, 5, 6 };
int d =0;
for (int i = 0; i < a.Length; i++)
{
d += a[i] - b[i];
}