我正在为一门初学Java课程工作,我完全陷入了这个问题。
编写一个程序,计算数组中数字对差异的总和。例如,如果数组是[2,3,7,8,9,12],则对的差的总和是 (2-3)+(7-8)+(9-12) **我们不允许使用内置的Java函数。
到目前为止,这是我所拥有的......(我知道这很糟糕)
public static void main(String[] args)
{
int[] A = {3, 4, 5, 6, 1, 2};
int total = 0;
int sum = 0;
for(int i = 0; i < A.length; i++)
{
for(int j = i+1; j < A.length; j++)
sum = (A[i] - A[j]);
}
System.out.println(sum);
}
}
答案 0 :(得分:1)
当您使用嵌套循环时,您正在执行此操作:
i = 0,
j = 1,
sum = 3 - 4;
// next cycle,
i = 0,
j = 2,
sum = 3 - 5;
// etc...,
i = 1,
j = 2,
sum = 4 - 5,
// etc..;
对于A[i]
的每个值,这意味着您A[i]
和A[j + 1]
数组中的所有值的差异。此外,您还没有更新sum变量。执行sum = A[i] - A[i + 1]
时,因为此操作仅为变量sum提供新值。你想要的是sum+= value
,这意味着sum = sum + newValue (newValue = A[i] - A[i +1])
。此操作将新值添加到sum中存储的旧值。
所以你需要做的是添加两个值并跳转2个索引(i+=2
),这样你就不会(例如)3-4,4-5,5-6等你想做什么是3-4,5-6等。
试试这个:
public static void main(String[] args)
{
int[] A = {3, 4, 5, 6, 1, 2};
int total = 0;
int sum = 0;
for(int i = 0; i < A.length; i+=2)
{
sum +=(A[i] - A[i + 1]);
}
System.out.println(sum);
}
}
答案 1 :(得分:0)
我不确定你到底发生了什么,但看起来你没有添加总和。
public static void main(String[] args)
{
int[] A = {3, 4, 5, 6, 1, 2};
int total = 0;
int sum = 0,i=0;
while(i<A.length){
sum+= (A[i] - A[i++]);
}
System.out.println(sum);
}