查找数组中int数的最小值(Java)

时间:2014-12-05 13:33:58

标签: java arrays min

我正在尝试在数组中找到数字的最小值,但它并不总能正常工作。这是我写的代码:

        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];
         }
        }
    }   

有人可以纠正我吗?

10 个答案:

答案 0 :(得分:3)

不需要外循环,它只运行一次而且你不会使用i。你为什么拥有它?

对于内部循环,您需要与最小值进行比较。现在,您将它与数组中的第一个元素进行比较,该元素不一定是最小值。

min = arr[0];
for (j=0; j < arr.length; j++) {
    if (arr[j] < min) {  //<---fix is here
        min = arr[j];
    }
}

此外,您可以在1开始循环,因为您不需要将arr[0]与自身进行比较(它只是分配给min

答案 1 :(得分:1)

您正在检查每次迭代中的第一个元素,您基本上需要检查最小值

if (arr[j] < min) {
  min = arr[j];
}

答案 2 :(得分:1)

int min = arr[0];
for(int num : arr) {
    if (num < min){
        min = num;
    }
}

min现在包含最小值。

答案 3 :(得分:1)

如果arr是非原始数字的数组,我建议

java.util.Collections.min(java.util.Arrays.asList(arr));

因为维护起来会更简单。如果你需要同时拉出最小值和最大值,那么恢复手动编码是有道理的,但如果有可用的库函数,我建议不要使用手动编码循环。

无论如何,你应该检查arr != null和第0个元素的存在。

答案 4 :(得分:1)

一个选项是对数组进行排序并获取第一个元素:

import java.util.Arrays;

...

int ints[] = {30,5,7,4,10};
Arrays.sort(ints);

int min = ints[0];
int max = ints[ints.length - 1];

答案 5 :(得分:0)

这是执行此操作的一般算法。你可以为它编写代码。

  

将数组中的第一项存储为当前最小值。

     

从第二个项目(索引1)开始循环遍历数组。

     

对于数组的每次迭代,检查当前项是否更少   比最低限度。如果是,请将其存储为新的最小值。

     

一旦循环结束,你就有了最低限度!

答案 6 :(得分:0)

一种方法是使用java.util.Arrays类:

示例:

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]);
}
}

从Java文档中,Arrays.sort(int [])将指定的数组按数字升序排序。

因此这里的输出打印1。

答案 7 :(得分:0)

尝试这个:

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);

答案 8 :(得分:0)

      int min=0; 
        for (int i = 0; i < array.length; i++) {
        if (min > array[i]) {
        min = array[i];
        }
}

    System.out.println(min);

获得MAX和MIN的简单方法

获取 MIN

System.out.println(getMinValue(your array)); 

MAX

System.out.println(getMaxValue(your array));

答案 9 :(得分:0)

我要输入5个值并将它们存储在数组中并遍历它们以找到最小值,但它始终会打印0。这段代码有什么问题?我对最大值使用了相同的逻辑,没有问题。

public class FindMinValue {

    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        int i;
        int NUM_VALUES = 5;
        int[] userVals = new int [NUM_VALUES];
        
        System.out.println("Enter " + NUM_VALUES + " values one at a time.");
        
        int minVal = userVals[0]; //min value so far
        
        for(i = 0; i < userVals.length; ++i) {
            userVals[i] = scnr.nextInt();
            if(userVals[i] < minVal) {
                minVal = userVals[i];
            }
        }
        System.out.println("Min Value is :" + minVal);
        

    }

}