一.目标
- 理解数组的作用
- 掌握数组的定义
- 掌握数组的基本使用及常用操作
- 掌握数组常用操作
- 获取最大、最小值
- 数字排序
- 插入数字
二.为什么需要数组
1.理解数组的作用
数组是一个变量,存储相同数据类型的一组数据
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间
三.数组的定义
1.声明数组 2.分配空间 3.赋值 4.处理数据
int[] a;
a=new int[5];
a[0=8];
a[0]=a[0]*10;
/第一步 声明数组----》准备一个可以存储多个数据的容器
//数据类型[]数组名; 数据类型 数组名[]
int [] arr; String strs[];
//第二步:分配空间----》告诉数组中可以存储多少个数据
//数组名=new 数据类型[数组元素个数];
arr=new int[3]; strs=new String[5];
//第三步:存储数据-----》将数据存储在数值的指定位置(位置通过下标来确定,下标从0开始)
arr[1]=100; strs[0]="大湖明成";
//操作数据
//通过数组名[下标]输出数组中指定位置的元素System.out.println("a[0]");
四.数组的常用操作
1.遍历数组
int[]num={1,2,3,45,48,8,45,8,56,36};
//数组名.length:可以获取数组元素个数
int size=num.length;
System.out.println("nums数组中元素的个数:"+size);
//遍历数组
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+" ");
2.增强for循环
增强for循环
语法结构
for(数据类型 变量名:数组名或者集合名){
//操作变量的代码
}
执行规律
按照数组或者集合中的元素顺序依次取出元素,存储在变量中,这时候操作变量就是操作数组或者集合中的元素
int[]num={0,1,2,3,5,6,89,8};
for (int a:num){
System.out.println(a);
}
3.由键盘输入数组中的元素
int [] arr=new int[5];
for(int a:arr){
System.out.print(a+" ");
}
Scanner scanner=new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第"+(i+1)+"数");
arr[i] = scanner.nextInt();
}
for (int b:arr){
System.out.println(b+" ");
}
4.寻找数组中的最大值
//从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分
Scanner scanner=new Scanner(System.in);
double max=0;
double[] sum=new double[5];
for (int i = 0; i < sum.length; i++) {
System.out.println("请输入第"+(i+1)+"位同学成绩");
sum[i]=scanner.nextDouble();
}for (double a:sum){
if (a>max){
max=a;
}
}
System.out.println("成绩的最高值是"+max);
eg1
有一组学员的成绩{99.85.82.63.60}
* 将他们降序排列,要增加一名学员的成绩
* 将他插入序列,并保持降序思想:1、新建一个长度比原来数组长度大1的数组
2、将原来数组中的元素依次存储到新的数组中(新的数组中最后一个元素为默认值0)
3、获取要插入的元素值
4、通过比较大小 确定要插入位置的索引
5、将这个索引之后的位置向后移动1
6、将插入的数放到这个索引中
Scanner scanner=new Scanner(System.in);
//准备数组
int[] scores={99,85,82,63,60};
int[] newScores=new int[scores.length+1];
//将原来是数组放到新数组里面;
for (int i = 0; i < scores.length; i++) {
newScores[i]=scores[i];
}
System.out.println("遍历新数组");
for (int i = 0; i < newScores.length; i++) {
System.out.print(newScores[i]+"\t");
}
//获得键盘输入的成绩
System.out.println("输入插入的成绩");
int insert=scanner.nextInt();
int index= newScores.length-1;//声明一个变量 存储插入元素要插入的位置
//将插入的元素进行比较 如果插入元素比数组的元素大 后续元素不在比较
for (int i = 0; i < newScores.length; i++) {
if (insert>newScores[i]){
index=i;
break;
}
}
for (int i = newScores.length-1; i >index; i--) {
newScores[i]=newScores[i-1];
}
newScores[index]=insert;
System.out.println("遍历修改之后的数组");
for (int i = 0; i < newScores.length; i++) {
System.out.print(newScores[i]+"\t");
}
五.二维数组
//二维数组的操作
//声明二维数组
//数据类型[][] 数组名;
int[][] arr; char[][] chars;
//分配空间
//数组名=new 数据类型[数组长度][数组长度];
//数组名=new 数据类型[数据长度][];
arr=new int[4][4]; chars=new char[4][];
//赋值
arr[0][0]=10;
//操作数据
//数组名[下标][下标]
//遍历二维数组arr[1][1]=10; int[][]arr={{1,2},{4,5,6},{7}}; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j]); } System.out.println(); }
Eg2
//已知有3个班级各5名学员,请使用
// 二维数组计算各个班级的总成绩
Scanner scanner = new Scanner(System.in);
double[][] arr = new double[3][5];
for (int i = 0; i < arr.length; i++) {
double sum=0;
System.out.println("请输入第"+(i+1)+"班级的成绩");
for (int j = 0; j < arr[i].length; j++) {
System.out.println("请输入第"+(j+1)+"同学的成绩");
arr[i][j]=scanner.nextDouble();
sum+=arr[i][j];
}
System.out.println("第"+(i+1)+"班级的总成绩是"+sum);
}