数组的元素
1.每个元素都是一种类型的变量
2.索引/下标(整数)从0开始
3.访问元素通过索引/下标
int[] a = new int[10];
a[0] = 5;
a[6] = 7;
把5放到0的盒子里
把7放到6的盒子里
有效的下标
1.最小的下标是0,最大的下标是数组的元素个数-1
2.编译器不检查下标是否有效
3.如出现无效下标,会导致程序终止
例1
int[] numbers = new int[100];
numbers[-1] = 10;
numbers[100] = 10;
Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException: -1
at Main.main(Main.java:12)
例2
int[] numbers = new int[100];
int k = numbers[-1];
同样出错
前面的程序危险是因为输出的数据可能超过100个
有元素个数可以是变量
思路:
先让用户报输入数据的数量,再读数据
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
double sum = 0;
int count = 0;
// 读进count
count = in.nextInt();
// 保险机制
if (count > 0)
{
// 创建count个int,数组大小程序运行时才知道结果
// 相比上一节课新的东西
int[] numbers = new int[count];
// 循环很多遍,遍历数组(循环很多遍),
for(int i = 0; i < count; i++ )
{
numbers[i] = in.nextInt();
// 每次累加,没必要遍历数组之后再跑一遍+sum
sum += numbers[i];
}
// 算平均
double average = sum / count;
// 再遍历一遍数组
for (int i = 0; i < count; i++ )
{
if (numbers[i] > average)
{
System.out.println(numbers[i]);
}
}
System.out.println("平均数="+sum/count);
}
}
}
留意
1.数组大小在运行过程中依旧不能改变
新的——length
1.每个数组都有一个
2.告诉你它的元素数量
原来我们写:
<p class="p1"><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span class="s1" style="font-family: Arial, Helvetica, sans-serif;">for</span><span style="font-family: Arial, Helvetica, sans-serif;"> ( </span><span class="s2" style="font-family: Arial, Helvetica, sans-serif;">i</span><span style="font-family: Arial, Helvetica, sans-serif;"> = 0; </span><span class="s2" style="font-family: Arial, Helvetica, sans-serif;">i</span><span style="font-family: Arial, Helvetica, sans-serif;"> < 100; ++</span><span class="s2" style="font-family: Arial, Helvetica, sans-serif;">i</span><span style="font-family: Arial, Helvetica, sans-serif;"> )</span></p><p class="p1"> <span> </span> {</p><p class="p1"> <span> </span><span> </span> <span class="s3">sum</span> += <span class="s2">grade</span>[<span class="s2">i</span>];</p><p class="p1"> <span> </span> }</p><p class="p2"></p>
最好改成这样:
<span style="white-space:pre"></span><pre name="code" class="java"><p class="p1">// <span> </span> 数组的变量名字+.+length</p><p class="p1">// <span> </span> .的意思是访问grade里面的length</p><p class="p2"> <span> </span> <span class="s1">for</span> (<span class="s1">int</span> <span class="s2">i</span> = 0; <span class="s2">i</span> < <span class="s3">grade</span>.length; ++<span class="s2">i</span> )</p><p class="p2"> <span> </span> {</p><p class="p2"> <span> </span><span> </span> <span class="s2">sum</span> += <span class="s3">grade</span>[<span class="s2">i</span>];</p><p class="p2"> <span> </span> }</p>
1.点,后面再详讲
2.想知道数组有多少元素,用
grade<数组名字>.length
例
for (int i = 0; i < numbers.length; i++ )
{
if (numbers[i] > average)
{
System.out.println(numbers[i]);
}
}
好处:
1.可拓展性
方便修改代码