为什么程序没有给出数组的最小值?

时间:2014-09-16 22:17:13

标签: java arrays min

public static int n = 10;
public static int i = 0;

public static void main(String[] args) {
    int[] arr = new int[n];
    int max = arr[i];
    int min = arr[i];
    FullArr(arr);
    MinArr(arr);
    for (i = 0; i < arr.length; i++) {
        if (max < arr[i]) {
            max = arr[i];
        }
        System.out.println();
        System.out.println(max);
    }
}

public static void FullArr(int[] ar) {
    int[] arr = new int[n];
    for (i = 0; i < arr.length; i++) {
        ar[i] = (int) (Math.random() * 100);
        System.out.print(ar[i] + ", ");
    }
}

public static void MinArr(int[] ar) {
    int min = ar[i];
    for (i = 0; i < ar.length; i++) {
        if (min > ar[i]) {
            min = ar[i];
        }
    }
    System.out.println();
    System.out.println(min);
}

该程序给我错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
    at home.ifif.MinArr(ifif.java:35)
    at home.ifif.main(ifif.java:12)

1 个答案:

答案 0 :(得分:1)

MinArr函数的第一行是

int min = ar[i];

但是在那时我仍然拥有FullArr中最后一个for循环之后的值。出于这个原因,我不应该是你的类的属性,而是每个函数的局部变量。因此,删除将i声明为属性的行。声明min和max的行应该是

int min = arr[0]

int max = arr[0]

我应该是你的for循环的本地变量,所以循环应该以{{1​​}}

开头

完整的程序看起来像这样:

for(int i = 0;...