【问题标题】:min- and max value of an array in JavaJava中数组的最小值和最大值
【发布时间】:2016-06-14 19:12:14
【问题描述】:

我正在尝试获取数组的最小值和最大值。问题是我不确定for loop 到底发生了什么。我们用int 创建一个for loop。然后是 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);
}
}

期待您的回复

【问题讨论】:

  • numbers[i] 引用数组中的单个数字。所以例如 numbers[0] 是 92,numbers[1] 是 -108 等等。

标签: java arrays


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    int[] array = new int[10];
    

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

    【讨论】:

    • 好的,所以我应该理解它是怎样的——它背后没有魔法或大逻辑——要到达第 i 个元素,你使用 array[i]。如果我做对了,那就是 [i] 因为我们处于 for 循环中。如果我愿意,我可以输入 array[1] = x、array[2] = y 等,它们完全一样
    • @Rio, array[0] 让您可以访问数组的第一个元素,array[1] 可以访问第二个元素,依此类推。 numbers[i] 在你的for 循环中,因为在这个循环中你初始化了int i,它在循环的每一步中都会增加。因此,通过嵌套在for 循环中的numbers[i],您随后可以访问数组numbers 的每个元素。
    【解决方案3】:

    如果你想从数组中获取最小值和最大值,你可以使用 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
        }
    }
    }
    

    【讨论】:

      【解决方案4】:

      让我们来看看你想要理解的内容

      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 的最小值和最大值。值如下:

      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 是第一个元素,一直到数组的 size-1,在本例中为 9)。

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

      下一部分是 for 循环,所有计算都在其中发挥作用。 for 循环是说在 1 处启动一个名为 iint。每次执行此循环时,比较中间的布尔值,在本例中为 i &lt; 10,这意味着只要 i 是少于10个,留在循环中。每次迭代后,进行第三次操作,在本例中为i++,这意味着将i变量增加1。

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

      如果您查看这些值,数组中的第二个元素 -108 小于最小值。因此,min 现在设置为数组中的第一个元素。接下来,我们比较 -108 并查看它是否大于max,这又是 92。-108 不大于 92,所以它跳过了那个 if 语句。

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

      让我们来看看 for 循环的第二次迭代。既然我们走到了尽头,我们就执行i++ 语句。现在我们在i = 2。让我们检查以确保我们不会退出。 i 的值是否小于 10?是的,让我们从顶部继续!

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

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

      接下来,既然我们在底部,请执行i++i 现在等于 3。

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

      【讨论】:

      • 很棒的解释!我想我明白了,唯一困扰我的是“我们正在获取 numbers 数组的第二个元素(0 是第一个元素,记得吗?)并将其与 min first 的当前值进行比较” - 我不非常了解 numbers[i] - 我们如何将数组设置为 for 循环的整数?
      • @Rio 我更新了一点。但是当您说numbers[i] 时,您是在说给我获取在for 循环中声明的i 的值,然后从数组中获取该元素。所以如果i等于1,而你说numbers[i],我们想要得到数组的第二个元素,因为在数组中,0是第一个,1是第二个。正如其他人所说,您需要数组中的第 i 个元素。
      猜你喜欢
      • 2013-09-02
      • 2015-03-08
      • 1970-01-01
      • 2013-12-06
      • 2017-03-16
      • 2016-11-12
      • 1970-01-01
      • 2022-12-02
      • 2013-02-25
      相关资源
      最近更新 更多