2015-11-03 1 views
-1

У меня есть данные из цикла два.сумма 1, 2, 3 ... Две петли

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

Если я понимаю, что вы имеете два массива: Tsum2: [19 12 17] и Isum2: [98 33 26] из той же длины, то вы хотите сумму = -109 ??? – Shivam

+0

В качестве побочного элемента вы должны придерживаться условных обозначений java для обозначения переменных (начиная с нижнего регистра), иначе это может смутить, поскольку слова, начинающиеся с верхнего регистра, обычно определяют класс. – SomeJavaGuy

ответ

1

Ваш вопрос непонятен. Я не понимаю, почему вы задали 0 каждое значение в нескольких позициях 11. Это решение для понимания.

int total = 0; 
for (int i = 0; i < Tsum2.length; i++) { 
    total += Tsum2[i] - Isum2[i] 
} 
+1

Это будет работать, если 'Tsum2' и' Isum2' имеют одинаковое количество элементов. Что, если 'Isum2 []' имеет [меньше элементов] (https://docs.oracle.com/javase/7/docs/api/java/lang/ArrayIndexOutOfBoundsException.html), чем 'Tsum1'. – sam

+1

@sam: Затем OP должен указать, что должно произойти, поскольку это нарушает спецификации в вопросе. – Keppil

+0

Я написал этот код, потому что видел, что JJR KTS цикл от 0 до 359 для каждого массива. Если они имеют разную длину, он может проверять меньшую и итерацию с ее длины, а затем просто добавлять (или вычитать) другие. Извините за мой плохой английский xD – fattidare

0

Поскольку вы вычитаете элементы из 2 массивов, имеющих один и тот же индекс, вы не можете использовать цикл for и просто сохранять текущую сумму.

int sum=0; 
for (int x = 0; x < Tsum1.length; x++) { 
    sum= sum+ (Tsum2[x] - Isum2[x]); 
} 
+0

Вы можете использовать sum + = вместо sum = sum +;) – fattidare

+0

Да, я просто понял, что было бы проще понять этот путь для человека, задающего вопрос, но спасибо: D –

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); 
0

Вам нужна переменная для хранения суммы ваших массивов.

Если вы хотите, чтобы получить сумму двух массивов вы делаете это как:

int sum = 0; 
for(int i = 0; i < tsum2.length; i++) 
{ 
    sum = sum + (array1[i] - array2[i]); 
} 

Кроме того, все переменные должны быть в нижнем регистре, так как они не являются классами.

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]; 
} 
+0

Это не скомпилировало бы ,Имейте в виду, что это не вопрос C# (выглядит как код C#). – Tom

+0

Да, это C#. !! wats der в том, что он, по крайней мере, получит представление о том, как сделать na .. :) –

Смежные вопросы