我需要一些有关数组的帮助,我正在尝试创建一个简单的程序,该程序将从数组上的最大数获得最小的差,但似乎我正在执行的循环并没有达到目标。示例:int []数字= {2,5,7,32} ...输出必须为“ 30”,因为2是最小的数字,而32是最大的数字,它们的差是“ 30”。这是我的代码。

public static void main(String[] args) {

   int[] value   = {5,16,3,32};

    int diff = 0;
    int highest = 0;

   for (int i = 0; i<value.length; i++)
   {
       for(int y = 0;y<value.length;y++)
       {
           diff = value[i] - value[y];

           if(diff > highest){
               highest = diff;

               System.out.println("the difference of the lowest and the highest is "+ diff);
           }
       }
   }


}
}

请帮助,我仍在学习技巧和东西。谢谢 :)

最佳答案

您需要记录最小值和最大值,然后计算差值;而且,只需要一个循环即可:

public static void main(String[] args) {

    int[] value   = {5,16,3,32};
    // Guarantee sane initial min/max
    int min = Integer.MAX_VALUE, max = Integer.MIN_VALUE;


    for (final int val: value) {
        if (val < min)
            min = val;
        if (val > max)
            max = val;
    }

    System.out.println("diff is " + (max - min));
}


这里的“技巧”(如果可以称为技巧)当然是minmax的初始值。

注意:这里有溢出的危险。左手练习如何避免它!

关于java - 最小到最大数量差-Java数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16900567/

10-11 22:33
查看更多