在Java中显示数组元素的位置

时间:2012-02-12 16:56:18

标签: java arrays position

我正在尝试显示数组中最大值的位置(索引)数。这是一个包含100个随机数的数组。出于某种原因,在前几个数字之后输出是正确的。我总是在输出的开头得到错误的数字。这是我的代码; 感谢

public static void main(String[] args) {
    int max = 0;
    int array[] = new int[100];
    System.out.println();

    // code to display student responses
    randomNum(array);

    System.out.println(" Survey Responses - 100 Students: ");
    response(array);

    System.out.println("Positions of the highest numbers");
    System.out.println();

    for (int i = 0; i < array.length; i++) {
        max = Math.max(max, array[i]);
        if (array[i] == max) {
            System.out.println(i);
        }
    }
}

private static void randomNum(int A[]) {
    for (int i = 0; i < A.length; i++) {
        A[i] = (int) (Math.random() * 10000) % 10 + 1;
    }

}

public static void response(int[] resp) {
    for (int x = 0; x < resp.length; x++) {
        System.out.print(resp[x] + " ");
    }
    System.out.println();
}

3 个答案:

答案 0 :(得分:1)

运行两个循环,如下所示:

for (int i = 0; i < array.length; i++) {
    max = Math.max(max, array[i]);
}
for (int i = 0; i < array.length; i++) {
    if (array[i] == max) {
        System.out.println(i);
    }
}

到目前为止,您输出的是前缀中看到的最大数量的索引,而不是等于总最大值的索引。

答案 1 :(得分:0)

对数组进行排序(仅用于澄清)会不会更容易?那么你的最小元素在索引0,最大值在arr.length-1,如下所示:

java.util.Arrays.sort(arr);
final int min = (arr.length > 0) ? arr[0] : 0;
final int max = (arr.length > 0) ? arr[arr.length-1] : 0;

答案 2 :(得分:0)

你的算法错了。当您打印出值时,您将循环遍历数组,然后将'max'的当前值与数组的当前元素进行比较。所以如果你有一个只有10个数字的数组(为简单起见)

1,2,3,4,5,6,7,8,9,10

在第一次循环中,你将'max'(0)的当前值与数组的第一个元素(1)进行比较,然后打印1并将max设置为1.第二次通过你max(1)的当前值到数组(2)的第二个元素并打印2并将max设置为2.对于循环中的每次迭代都会发生同样的情况,并且最终会打印出每个值。

相反的情况

10,9,8,7,6,5,4,3,2,1

以不同的顺序包含相同的数字,你只打印10,因为你在第一次循环时将max设置为10.