Java中数组的最小值和最大值

时间:2016-06-14 19:12:14

标签: java arrays

我试图获取数组的最小值和最大值。问题是,我不确定for loop到底发生了什么。我们使用for loop创建int。然后是if语句和我的问题: numbers[i]应该是什么意思?我认为numbers已经指定了大小(9,通过初始化 {1,2 ,3,...,9} )。我们怎样才能将其更改为[i]以及我代表什么?

public class Array {

public static void main(String[] args) {
    int numbers[] = { 92, -108, 2, 120, 67, 4, -81, 9, 88, 1 };
    int min, max;
    min = max = numbers[0];

    for (int i = 1; i < 10; i++) {
        if (numbers[i] < min)
            min = numbers[i];
        if(numbers[i] > max){
            max = numbers[i];
        }
    }
    System.out.println("min is: " + min + "; max is: " + max);
}
}

期待您的回复

4 个答案:

答案 0 :(得分:2)

numbers[i]是您访问数组中 ith 元素的方式。

答案 1 :(得分:1)

作为Andrew Rueckert mentioned,在Java中以及大多数其他主要语言中,array[i]表示法提供对数组array的第i个元素的访问。您可以使用方括号[]在其定义中指定数组的大小,例如:

int[] array = new int[10];

但是稍后,您使用括号指定要访问的数组的哪个元素。在您的示例中,for循环从1到10迭代。在每次迭代中,它从数组numbers中读取当前(第i个)元素。

答案 2 :(得分:0)

让我们采取你想要理解的准系统

int numbers[] = { 92, -108, 2, 120, 67, 4, -81, 9, 88, 1 };
int min, max;
min = max = numbers[0];

for (int i = 1; i < 10; i++) {
    if (numbers[i] < min)
        min = numbers[i];
    if(numbers[i] > max){
        max = numbers[i];
    }
}

首先,您要将一组数字初始化为{}中的任何数字。所以你有一个长度为10的数组。然后我们声明两个int的min和max。值如下:

numbers[0] = 92;
numbers[1] = -108;
numbers[2] = 2;
numbers[3] = 120;
numbers[4] = 67;
numbers[5] = 4;
numbers[6] = -81;
numbers[7] = 9;
numbers[8] = 88;
numbers[9] = 1;

下一个语句将minmax声明为数组的第一个元素(0是第一个,一直到数组的大小为1,在本例中为9 )。

min = numbers[0] (92).
max = numbers[0] (92).

下一部分是for循环,这是所有计算发挥作用的地方。 for循环表示在1处开始int名为i off。每次进行此循环时,比较中间的布尔值,在本例中为i < 10,这意味着只要i小于10,就留在循环中。在每次迭代之后,执行第三个操作,在这种情况下为i++,这意味着将i变量增加1.

太好了,我们正在经历for循环。让我们从第一次迭代开始,这意味着i是1.我们正在采用numbers数组的第二个元素(0是第一个元素,记得吗?)并将其与当前值进行比较首先min(这是数组的第一个元素,92)。

好吧,如果你看一下这些值,-108,这是数组中的第二个元素,小于min。因此,min现在设置为数组中的第一个元素。接下来,我们比较-108并查看它是否大于max,同样是92.-108不大于92,因此它会跳过if语句。

i = 1
min = numbers[1] (-108).
max = numbers[0] (92).

让我们完成for循环的第二次迭代。自从我们结束之后,我们执行i++语句。现在我们在i = 2.让我们检查以确保我们不退出。 i的值是否小于10?是的,让我们从顶部继续!

数字[2](2)是否小于min(-108)的当前值?不,跳过if语句。数字[2]是否大于当前最大值(92)?不,让我们再看一下这些值:

i = 2
min = numbers[1] (-108)
max = numbers[0] (92)

接下来,由于我们处于最底层,请i++i现在等于3。

这一直持续到i = 9,因为当i = 10时,由于for循环中的中间语句,即exit子句,它会退出for循环。 / p>

答案 3 :(得分:0)

如果你想从数组中获取min和max值,你可以使用java.util Arrays类中的sort()方法。

import java.util.Arrays;

public class TestClass {

public static void main(String[] args) {
    int[] numbers = { 92, -108, 2, 120, 67, 4, -81, 9, 88, 1 };
    // print your array (no sorted)
    System.out.println(Arrays.toString(numbers));

    Arrays.sort(numbers);
    //print your array (sorted)
    System.out.println(Arrays.toString(numbers));

    for(int i = 0; i<numbers.length;i++){
        System.out.println("My array: ["+i+"] " +numbers[i]);
        // min = numbers[0] = -108
        // My array: [0] -108
        // My array: [1] -81
        // My array: [2] 1
        // My array: [3] 2
        // My array: [4] 4
        // My array: [5] 9
        // My array: [6] 67
        // My array: [7] 88
        // My array: [8] 92
        // My array: [9] 120
        // max = numbers[9] = 120
    }
}
}