我试图获取数组的最小值和最大值。问题是,我不确定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);
}
}
期待您的回复
答案 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;
下一个语句将min
和max
声明为数组的第一个元素(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
}
}
}