概念
所谓遍历,就是将一组数据中的所有元素访问一遍。数组的遍历就是访问数组中所含的所有数据,说白了就是扫描整个数组。
用途
用于批量查找或操作数组的元素
遍历方式
数组的下标区间是在[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的单一职责原则,所谓的单一职责原则就是对于一个软件实体(类、方法、控制块),只有一个引起它变化的原因。说白了就是一个模块只负责干一件事。目的是避免职责的耦合,可提高代码的可读性,便于查错和维护。