查找数组中整数的最小值(Java)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/27317066/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Finding the minimum value of int numbers in an array (Java)
提问by user3161261
I'm trying to find the minimum value of numbers in an array but it doesn't always work out properly. This is the code I wrote:
我试图找到数组中数字的最小值,但它并不总是能正常工作。这是我写的代码:
for (int i=0; i < arr.length; i++ ) {
min = arr[i];
for (j=0; j < arr.length; j++) {
if (arr[j] < arr[0]) {
min = arr[j];
}
}
}
Can someone correct me please?
有人可以纠正我吗?
回答by Wes Cumberland
There's no need for the outer loop, it only runs once and you don't use i
anyway. why do you have it?
不需要外循环,它只运行一次,i
无论如何你都不会使用。你为什么有它?
For the inner loop, you need to compare against the minimum value. Right now you are comparing it against the first element in the array, which is not necessarily the minimum value.
对于内循环,您需要与最小值进行比较。现在您正在将它与数组中的第一个元素进行比较,这不一定是最小值。
min = arr[0];
for (j=0; j < arr.length; j++) {
if (arr[j] < min) { //<---fix is here
min = arr[j];
}
}
Also you could start the loop at 1, since you don't need to compare arr[0]
against itself (it was just assigned to min
)
您也可以从 1 开始循环,因为您不需要arr[0]
与自身进行比较(它只是分配给min
)
回答by Milkmaid
int min = arr[0];
for(int num : arr) {
if (num < min){
min = num;
}
}
min now contains minimum value.
min 现在包含最小值。
回答by Orhan Obut
You are checking the first element in each iteration, you basically need to check minimum value
您正在检查每次迭代中的第一个元素,您基本上需要检查最小值
if (arr[j] < min) {
min = arr[j];
}
回答by Bathsheba
If arr
is an array of non-primitive numerics, I'd recommend
如果arr
是非原始数字数组,我建议
java.util.Collections.min(java.util.Arrays.asList(arr));
java.util.Collections.min(java.util.Arrays.asList(arr));
as that will be simpler to maintain. There's some justification in reverting to hand-coding if you need to pull the minimum and maximum out at the same time but I'd advise against hand-coding loops if there's a library function available.
因为这样维护起来会更简单。如果您需要同时拉出最小值和最大值,则有一些理由可以恢复手动编码,但如果有可用的库函数,我建议不要使用手动编码循环。
In any case, you ought to check arr != null
and the existence of a zeroth element.
无论如何,您应该检查arr != null
第零个元素的存在。
回答by thomas77
A way to do it would be using the java.util.Arrays class:
一种方法是使用 java.util.Arrays 类:
Example:
例子:
public class ArraySort {
public static void main(String[] args) {
int[] array = {12, 4, 6, 1, 56, 21, 77};
Arrays.sort(array);
System.out.println(array[0]);
}
}
From the Java doc, Arrays.sort(int[]) sort the specified array into ascending numerical order.
在 Java 文档中, Arrays.sort(int[]) 将指定的数组按数字升序排序。
So the output here prints 1.
所以这里的输出打印 1。
回答by Victor
One option is sort your array and get the first element:
一种选择是对数组进行排序并获取第一个元素:
import java.util.Arrays;
...
int ints[] = {30,5,7,4,10};
Arrays.sort(ints);
int min = ints[0];
int max = ints[ints.length - 1];
回答by Itachi Uchiha
int min=0;
for (int i = 0; i < array.length; i++) {
if (min > array[i]) {
min = array[i];
}
}
System.out.println(min);
simple way to get MAX and MIN
获得 MAX 和 MIN 的简单方法
To get MIN
获得MIN
System.out.println(getMinValue(your array));
and for MAX
对于MAX
System.out.println(getMaxValue(your array));
回答by ManojP
TRY this:
试试这个:
int min = arr[0];
for(int j=1;j<arr.length;j++)
{
if(min>arr[j])
{
min= arr[j];
}
}
System.out.println("min no is "+min);
回答by forgivenson
Here is a general algorithm for doing this. You can write the code for it.
这是执行此操作的通用算法。您可以为它编写代码。
Store the first item in the array as the current minimum.
Loop through the array, starting at the second item (index 1).
For each iteration of the array, check if the current item is less than the minimum. If it is, store it as the new minimum.
Once the loop ends, you have the minimum!
将数组中的第一项存储为当前最小值。
从第二项(索引 1)开始循环遍历数组。
对于数组的每次迭代,检查当前项是否小于最小值。如果是,则将其存储为新的最小值。
一旦循环结束,你就有了最小值!