为什么需要数组
随着我们学习的深入,我们写代码的过程中,可能会需要越来越多的变量,那么一个程序定义了很多类似的变量就让人很难操作,起名字也会是一个比较繁琐的过程,那么这个时候我们就要用数组了。
场景:
Java考试结束后,老师配了一项任务,计算全班(100人)Java课程考试的平均分。
我们用数组后,变量是很少的,我们只需要一个循环就可以完成赋值。只需要一个数组变量就可以存储所有数据。
什么是数组
数组: 是一个变量,存储相同数据类型的一组数据。
声明一个变量就是在内存空间划出一块合适的空间,声明一个数组就是在内存空间划出一串连续的空间。
数组基本要素:标识符、数组元素、元素下标(从0开始)、元素类型。
1 2 3
| 数组中的所有元素必须属于相同的数据类型 数组的大小一旦确认,就不可更改。 数组的类型决定了存储变量的类型。
|
如何使用数组
声明数组
声明数组: 告诉计算机数据类型是什么。
不同的声明方式:
1 2 3
| int[ ] score1; int score2[ ]; String[ ] name;
|
分配空间
分配空间: 告诉计算机分配几个连续的空间
1 2 3
| scores = new int[30]; avgAge = new int[6]; name = new String[30];
|
赋值
赋值:向分配的格子里放数据
1 2 3 4
| scores[0] = 88; scores[1] = 99; scores[2] = 66; ……
|
边声明边赋值
1 2 3 4
| int[ ] scores = {88, 99, 66}; int[ ] scores = new int[ ]{88, 99, 66};
|
示例
计算5位学生的平均分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| int[] scores = new int[5]; //成绩数组 int sum = 0; //成绩总和 Scanner input = new Scanner(System.in); System.out.println("请输入5位学员的成绩:"); for(int i = 0; i < scores.length; i++){ scores[i] = input.nextInt(); sum = sum + scores[i]; //成绩累加 } /*//使用foreach遍历 for(int i = 0; i < scores.length; i++){ scores[i] = input.nextInt(); } for(int score:scores){ sum+=score; }*/ //计算并输出平均分 System.out.println("学员的平均分是:" + (double)sum/scores.length);
|
求数组最大值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| int[] scores = new int[5]; int max = 0; //记录最大值 System.out.println("请输入5位学员的成绩:"); Scanner input = new Scanner(System.in); for(int i = 0; i < scores.length; i++){ scores[i] = input.nextInt(); } //计算最大值 //使用max存储擂主初始值:第一个元素为擂主 max = scores[0]; //循环打擂 for(int i = 1; i < scores.length; i++){ if(scores[i] > max){ max = scores[i]; } } System.out.println("考试成绩最高分为:" + max);
|
插入数值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| int[] list = new int[6]; // 长度为为6的数组 list[0] = 99; list[1] = 85; list[2] = 82; list[3] = 63; list[4] = 60;
int index = list.length; // 保存新增成绩插入位置 System.out.println("请输入新增成绩: "); Scanner input = new Scanner(System.in); int num = input.nextInt(); // 输入要插入的数据 // 找到新元素的插入位置 for (int i = 0; i < list.length; i++) { if (num > list[i]) { index = i; break; } } // 元素后移 for (int j = list.length - 1; j > index; j--) { list[j] = list[j - 1]; // index下标开始的元素后移一个位置 } list[index] = num;// 插入数据 System.out.println("插入成绩的下标是:" + index); System.out.println("插入后的成绩信息是: "); for (int k = 0; k < list.length; k++) { // 循环输出目前数组中的数据 System.out.print(list[k] + "\t"); }
|