数组中数字对的差异 - Java

时间:2016-10-18 23:20:33

标签: java arrays

我正在为一门初学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);
    }
}

2 个答案:

答案 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);
}