五、数组(数组的排序下一章)

一.目标

  • 理解数组的作用
  • 掌握数组的定义
  • 掌握数组的基本使用及常用操作
  • 掌握数组常用操作
  • 获取最大、最小值
  • 数字排序
  • 插入数字

  二.为什么需要数组

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);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值