概念

所谓遍历,就是将一组数据中的所有元素访问一遍。数组的遍历就是访问数组中所含的所有数据,说白了就是扫描整个数组。

用途

用于批量查找或操作数组的元素

遍历方式

数组的下标区间是在[0, 数组长度 - 1](或者[0, 数组长度)  ),所以可以用循环结构中的for循环实现。

代码格式:

for (int i = 0; i < 数组名.length; i++) {

...

}

如果想访问数组中部分元素,可以修改i的初值和循环条件

for (int i = 起始元素下标; i <= 终止元素下标; i++) {

...

}

练习

问题:

随机生成10个介于[0, 100]的随机整数,求这些数中,大于它们平均数的有几个

思路分析:

1. 要获取10个随机整数必定用到数组来存储,数组已知长度为10应该用动态初始化

2. 第一次遍历数组,生成随机数存到当前访问的元素(使用随机数前先导包和创建随即对象)

3. 第二次遍历数组,计算所有元素之和,并计算这些元素的平均数(为保证程序正确性,可将其打印输出)

4. 第三次遍历数组,将计算出的平均数和数组上的元素进行对比,统计大于平均数的元素的个数通过计数器记录

5. 将计数器的值打印输出

代码:

public class E2 {
    /**
     * @description TODO
     * @author Reno
     * @date 2022/7/5 16:34
     * @version 1.0.0
     */
    
    public static void main(String[] args) {
        Random r  = new Random();

        //分析:先定义长度为10的数组
        int arr[] = new int[10];
        //定义变量用于记录数组元素的平均数,先用这个变量存放数组元素总和
        double avg = 0;
        int sum = 0;
        //记录大于平均数的个数
        int count = 0;
        //单一职责原则:一个模块只能干一件事
        //第一次遍历数组通过随机整数录入每个元素的值,区间[0, 101),同时将元素的值累加到avg中
        for (int i = 0; i < arr.length; i++) {
            arr[i] = r.nextInt(101);
            //为了验证程序正确性,将数组元素打印输出
            System.out.print(arr[i] + " ");
        }
        //第二次遍历数组,计算元素总和
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        //计算平均值
        avg = 1.0 * sum / arr.length;
        System.out.println("平均数:" + avg);
        //第三次遍历数组,统计大于平均数的元素个数
        for (int i = 0; i < arr.length; i++) {
            //判定:每找出一个元素中大于平均数的元素,计数器+1
            if (arr[i] > avg) {
                count++;
            }
        }
        //将计数器值打印
        System.out.println("大于平均数的元素个数:" + count);
    }
}

其中,将随机数录入数组的操作看似可以和计算总和的操作写在一个for循环上,但违背了Java的单一职责原则,所谓的单一职责原则就是对于一个软件实体(类、方法、控制块),只有一个引起它变化的原因。说白了就是一个模块只负责干一件事。目的是避免职责的耦合,可提高代码的可读性,便于查错和维护。