首页 > 代码库 > Java程序设计基础 数组-3
Java程序设计基础 数组-3
继续我们数组的分享。
我们一旦定义了数组,数组中就有了很多这种类型的变量,数组中的每一个元素都是那种类型的变量,而我们访问他们的时候是通过索引或者说是通过下标来访问的,索引或者下标一定是整数,从 0 开始的。
如果说我们定义 i ,int i ; 我们得到有那么一个叫做 i 的地方,里面我们可以放一些数,如果说 i = 5;那么我们就把 5 放进去了 。
现在比如说有一个数组 int[] a = new int[10]; 这个时候我们就不是那么一个地方了,我们有十个这样的地方,每一个地方里面都是一个 int ,每一个地方都有一个编号,这个编号从 0 开始,0号、1号、... 一直到9号,如果我们说 a[0] = 5; 那么就是我们在 0 号地方放了一个5。
数组就是这样一种东西,它里面就是很多一种类型的变量,每一个变量都是通过数字编号来访问它的,编号是从 0 开始的,一直到 数组个数-1 为止,最大的下标是 数字个数-1。对于数组来说有效的下标是从0 开始的,最小的是 0 ,最大的是 数组个数-1。可是我们的编译器是不检查有效下标的。比如:
我们之前定义了 numbers 数组,现在我们写 numbers[-1] = 10; 编译器没有报错;
再写一个 numbers[100] = 10; 我们知道 100 都已经超出了,最大只有99,还是没有报错,编译器不来检查这件事情。可是如果我们运行这个程序,马上他会抛出异常:
这个异常叫做数组的索引溢出了边界,在第11行。
前面的这个程序我们说可能涉及到很多数字会越界,是危险的,因为我们创建了 100 个这样的类型的 数组,cnt一直+1,如果没有一定的限制cnt会超过一百的,所以说只要cnt超过一百,我们这个程序就会抛出异常了,我们事先不知道用户会输入的多少个数字,只是用-1来标志输入结束,直接定义100个 这样做是危险的,怎么做才是安全的呢。
在之前我们提到过在创建数组的时候我们不是一定要给一个常数的,数组大小完全可以是个变量,也就是说我们可以换一个思路,我们不是让用户输入-1标志着结束,而是让用户输入一个数,让用户告诉我们说这一次他要输入多少个数,然后我们根据这个数来决定这个数组该开多大,然后在把数据读进来。以下是我们完成这个功能的代码:
package exercise; import java.util.Scanner; public class Average { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner in = new Scanner(System.in); System.out.print("请输入想要输入数据的个数:"); double sum = 0; int cnt = in.nextInt(); if(cnt > 0) { int[] numbers = new int[cnt]; for(int i = 0;i < cnt;i++) { numbers[i] = in.nextInt(); sum += numbers[i]; } double average = sum/cnt; for(int i = 0 ;i < cnt ;i++) { if (numbers[i] >= average) { System.out.println(numbers[i]); } } System.out.println("the average is :" + average); } } }
程序运行结果为:
请输入想要输入数据的个数:10
1 2 3 4 5 6 7 8 9 10
6
7
8
9
10
the average is :5.5
Java程序设计基础 数组-3