数组复习片+练习题

发布时间 2023-07-31 09:47:33作者: 北岛的樱花

数组的遍历

  • 定义一个数组,求和
int[] arr = {1,2,3,4,5,6,7};
        int sum = 0;
        for (int i = 0; i <arr.length ; i++) {
            sum = sum +arr[i];
        }
        System.out.println(sum);
  • 定义一个数组,统计数组里面一共有多少能够被3 整除的数字:
int[] arr1 = {4,62,85,36,97,53,68,17,84,82,94,15,58,52,57,21,73,91,25,57,39,75};
        int count = 0;
        for (int i = 0; i < arr1.length; i++) {
            if (arr1[i]%3==0){
                count++;
            }
        }
        System.out.println("共有"+count+"个数字能够被3整除");
    }

  • 定义一整数类型数组,如果该数字是奇数,则将当前数字扩大两倍,如果是偶数,则将该数字变成该数字的1/2.

一个循环尽量只做一件事情,虽然把打印写的同一个循环里面可以,结果一样,但是不建议。

 int[] arr3 = {21,46,42,56,24,556,83,72,41,63,58,24};
        for (int i = 0; i < arr3.length; i++) {
            if (arr3[i]%2==1) {
                arr3[i] = arr3[i]*2;
            }else
                arr3[i] = arr3[i]/2;
           
        }
        //一个循环尽量只做一件事情,虽然把打印写的同一个循环里面可以,结果一样,但是不建议。
        for (int i = 0; i < arr3.length; i++) {
            System.out.println(arr3[i]);
        }

数组的动态初始化和常见的问题

静态:已经知道数组的具体数据(可以写死) :int[] arr= {1,2,4}
动态:不知道数组里面的具体数值 int[] arr={?,?,?}

动态初始化:初始化的时候,只指定数组的长度,有系统为数组分配初始值
格式:数据类型 [] 数组名 = new 数据类型[数组长度]
int[] arr = new int[100];

  • 定义一个数组,用来存储班级中五十个学生的姓名,姓名未知,带学生报道后,在进行添加
 String[] arr4 = new String[50];
        arr4[0] = "da";
        arr4[1] = "ff";
        arr4[2] = "dafew";
        arr4[3] = "dwfwea";
        arr4[4] = "dafwe";
        arr4[5] = "dwefwa";
        System.out.println(arr4[0]);
        System.out.println(arr4[1]);
        System.out.println(arr4[2]);
        System.out.println(arr4[3]);
        System.out.println(arr4[4]);
        System.out.println(arr4[5]);
        System.out.println(arr4[6]);

在这里插入图片描述

字符串的数组 初始值默认为NULL,int 类型的默认初始值为0;

 int[] x= new int[3];
        x[0] = 1;
        System.out.println(x[0]);
        System.out.println(x[1]);
        System.out.println(x[2]);

在这里插入图片描述
初始化规律:
数组默认初始化值:
整数类型:默认初始化值0
小数类型:默认初始化值0.0
字符类型:默认初始化值为'/u0000' 空格
布尔类型:默认初始化值为 false
引用数据类型:默认初始化值为null;

静态初始化和动态初始化的区别

动态:手动指定数组长度,由系统给出默认初始化值。
静态:手动指定数组元素,系统会根据元素的个数,计算出数组的长度。

  • 举例:
    用数组容器来存储键盘录入五个整数,应使用动态数组 int[] arr=

数组常见的问题

在这里插入图片描述
.ArrayIndexOutOfBoundsException:数组索引超出范围异常(索引越界异常)
原因:访问了不存在的索引

数组常见的操作

  1. 求最值
    已知数组元素为{2,3,5,1,7,4}
    请找出数组中最大值 并打印在控制台:
        int[] arr6 = {2,3,5,1,7,4};
        int max =arr6[0];      //临时认为0索引最大
        for (int i = 0; i < arr6.length; i++) {//循环第一次是自己和自己比较,可以跳过此循环,从i=1开始进行循环
            if (arr6[i]>=max){
                max = arr6[i];
            }
        }
        System.out.println(max);

max的初始值不能随便写成0,如果数组中的值都是负数,此时max等于0 ,大于数组中的任意值,所以一般临时默认为索引0的值是最大的。

  1. 求和并统计个数
    生成10个0~100之间的随机数,
    (1)求出所有数据的和,
    (2)求出所有数据的平均数,
    (3)统计有多少个数小于平均值
 int[] arr= new int[10];
        Random r = new Random();
        //生成数组,一个循环只干一件事
        for (int i = 0; i < arr.length; i++) {
            int number = r.nextInt(100);
            arr[i] = number;
        }
        //所有数据的和
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum = sum +arr[i];
            System.out.print(arr[i]+"  ");
        }
        System.out.println("数组中所有的数字和是"+sum);

        //求所有的平均数
        double avg = sum/10.0;
        System.out.println("平均数是"+avg);

        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]<avg){
                count++;
            }
        }
        System.out.println("比平均数小的个数总共有"+count+"个");

输出结果:
在这里插入图片描述

  1. 交换数组中的数据
    本人方法:
    
        int[] arr = {1,2,3,4,5,6,7,8};
        //不能小于arr.length,否则循环到数组长度的1/2之后,交换好的数据又会被交换回去。
        for (int i = 0; i < arr.length/2; i++) {
            int j= arr.length-1-i;
            int temp;
            temp = arr[i];
            arr[i] =arr[j];
            arr[j] =temp;
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }

b站up主方法:

int[] arr = {1,2,3,4,5,6,7,8};
        for (int i = 0,j = arr.length-1; i < j;i++,j--) {
            int temp;
            temp = arr[i];
            arr[i] =arr[j];
            arr[j] =temp;
        }
        for (int i : arr) {
            System.out.print(i);
        }