找到数组中的最小值

时间:2015-10-04 14:18:47

标签: java

我对此代码有一些问题:

import java.util.*;

public class Function{
    public static void main(String[] Problem) {
        int i, continut, minim = 0;
        Scanner in = new Scanner(System.in);
        System.out.println("Type the maximum number of element:");
        continut = in.nextInt();
        int array[] = new int[continut];
        for (i = 0; i < continut; i++) {
            array[i] = in.nextInt();
        }

        for (i = 0; i < continut; i++) {
            if (array[i] < minim) {
                minim = array[i];
            }
        }

        System.out.print(minim);
    }
}

我不明白为什么在我运行这个程序后输出总是给我minim = 0。

5 个答案:

答案 0 :(得分:3)

您当前的minim设置为0并且您可能提供更大的数字,这意味着最小数字永远不会被任何较小的数字替换。

要避免此问题,您可以使用

初始化minim
  1. 来自用户的第一个值,
  2. 最大可能的整数minim = Integer.MAX_VALUE

答案 1 :(得分:1)

minim=Integer.MAX_VALUE

而不是0应该做的工作。这样,您就可以确定第一个值睾丸低于minim

答案 2 :(得分:0)

您可以使用数组的第一个元素(如

)初始化它,而不是0
minim=array[0];

现在您可以轻松地从该阵列中检查最小值!

答案 3 :(得分:0)

将第一个输入分配到minim,并从第二个输入到minim进行比较并更新:

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

但是,这要求至少有一个元素。 事实上,如果没有元素,找到最小值是没有意义的。 所以添加输入验证很好:

while (true) {
    System.out.println("Type the maximum number of element:");
    continut = in.nextInt();
    if (contitut > 0) {
        break;
    }
    System.out.println("Invalid input: please enter an integer > 0");
}

答案 4 :(得分:-1)

您必须将数组的第一个值存储为minim。然后,如果其他值小于minim,则必须检查其他值,然后将该值替换为该值。

您可以通过添加

来实现
minim = array[0];
代码前