我需要一些有关数组的帮助,我正在尝试创建一个简单的程序,该程序将从数组上的最大数获得最小的差,但似乎我正在执行的循环并没有达到目标。示例: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));
}
这里的“技巧”(如果可以称为技巧)当然是
min
和max
的初始值。注意:这里有溢出的危险。左手练习如何避免它!
关于java - 最小到最大数量差-Java数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16900567/