2016-06-14 164 views
0

我试图获取数组的最小值和最大值。问题是,我不确定在for循环中究竟发生了什么。我们用int来创建一个for循环。然后是if语句和我的问题:numbers[i]是什么意思?我想通过初始化{1,2,3,...,9}。我们怎样才能改变这种状况,以[i]和我站在什么呢?Java中数组的最小值和最大值

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); 
} 
} 
该数字已经有了指定的大小(9,

期待您的答复

+2

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

回答

2

numbers[i]是你如何在数组中访问第i个元素。

0

让我们的你想了解

什么准系统10
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是第一个,一路到尺寸-1阵列,在这种情况下是9)。

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

下一部分是for循环,这是所有计算都起作用的地方。 for循环说开始一个int命名为i关闭1.每当你经过这个循环,比较中间的布尔值,在这种情况下是i < 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?是的,让我们继续从顶端!

数字[2](它是2)是否小于当前值min(-108)?不,请跳过,如果声明。是大于当前值(92)的数字[2]?不,让我们再看看值:

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

接下来,因为我们是在底部,做i++i现在等于3.

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

+0

真棒解释!我想我明白了,唯一令我困扰的是“我们正在采用数字数组的第二个元素(0是第一个元素,请记住?)并将其与当前min值进行比较” - 我没有很明白,数字[我] - 我们如何将我们的数组设置为for循环的整数? – Rio

+0

@Rio我更新了一些。但是当你说'numbers [i]'时,你说的是让我在for循环中声明的'i'的值,然后从数组中得到那个元素。所以如果'i'等于1,并且你说'numbers [i]',我们想要得到数组的第二个元素,因为在数组中,0是第一个,1是第二个元素。正如其他人所说的,你需要数组中的第i个元素。 – Orin

1

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

int[] array = new int[10]; 

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

+0

好吧,所以我应该看看它是如何的 - 没有魔术或背后的大逻辑 - 到第i个元素,你使用array [i]。如果我知道它是正确的,那就是[我],因为我们处于for循环。如果我想,我可以键入数组[1] = x,数组[2] = y等,它是完全一样的东西 – Rio

+0

@Rio,'array [0]'可以访问数组的第一个元素,''数组[1]'到第二个等等。在'for'循环中有'numbers [i]',因为在这个循环中你初始化了'int i',它在循环的每一步都会增加。因此,通过嵌套在'for'循环中的'numbers [i]',您可以访问数组'numbers'中的每个元素。 – tomaszkrzyzek

0

如果你想从数组中获得最小值和最大值,你可以使用java.utilArray类的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 
    } 
} 
} 
相关问题