一、什么是数组的遍历?
1.通俗的说就是把数组中的元素都读一遍过去(部分有if条件+break的则可能不会完全遍历)
2.你可以对于数组中的每个数进行处理,亦或者是找到数组中那个你需要的数。
二、 数组遍历练习
案例一:
需求:请随机生成10个1~100之间的数字,求出大于这个数字的平均数的个数。
我们不能为了做题而做题,而是应该是用练习来培养我们对于这类问题的一种解题思路。首先我们对题目需求进行分析:
1.首先需要随机生成10个数字使用Random类方法
2.使用数组将生成的10个数进行存放,进而使用for循环遍历数组将10个数累加再除以10求出其平均数
3.然后再使用for循环里使用if判断每个数与其平均数的大小,并使用计数器进行记录
4.最后将结果打印输出
按照分析的思路再敲代码问题也就迎刃而解。
解题代码如下:(答案不唯一,仅供参考)
package com.feisi.day7;
import java.util.Random;
/**
* @author 14491
* @version 1.0.0
* @description 请随机生成10个1~100之间的数字,求出大于这十个数字的平均数的个数
* @date 2022/7/5 16:34
*/
public class Demo1 {
public static void main(String[] args) {
//创建对象
Random random = new Random();
//定义变量
int sum = 0;//保存10个随机数的和
int avg = 0;//保存平均数
int count = 0;//计数器
// 定义数组
int arr[] = new int[10];//用来保存随机生成的10个1~100之间的数
//使用for循环生成10个随机数并存入数组
for (int i = 0; i < arr.length; i++) {
//29、30行耦合度太高
arr[i] = random.nextInt(100) + 1;//生成10个1~100之间的随机数并保存到数组里
sum = sum + arr[i];//将生成的随机数累加
System.out.print("随机数为:" + arr[i]);
}
//求出其平均数sum/数组长度
avg = sum / arr.length;
System.out.println("");
System.out.println("该平均数为:" + avg);
//遍历arr数组并与avg平均数进行比较
for (int i = 0; i < arr.length; i++) {
if (arr[i] > avg) {
count++;
System.out.println("比avg大的该随机数为:" + arr[i]);
}
}
//将最后的打印输出
System.out.println("大于avg的数一个有:" + count + "个。");
}
}
其实在上述的代码中还存在一些问题:
在上述代码的第一个for循环中的循环体语句耦合度太高应当加以修改:
for (int i = 0; i < arr.length; i++) { //29、30行耦合度太高 arr[i] = random.nextInt(100) + 1;//生成10个1~100之间的随机数并保存到数组里 sum = sum + arr[i];//将生成的随机数累加 System.out.print("随机数为:" + arr[i]); }
耦合度太高的危害:
耦合度太高不利于扩展和维护,修改一个类的内容要关联修改多个跟这个有关系的类
这个危害对于我们以后从事软件开发工作时是非常大的,建议重视!!!
修改后的代码:
不要嫌麻烦,多使用一个for循环来完成,万一其中for循环有错误时,我们找bug并修改会节省很多时间。
1.先进行赋值操作
for (int i = 0; i < arr.length; i++) { arr[i] = random.nextInt(100) + 1;//生成10个1~100之间的随机数并保存到数组里 sum = sum + arr[i];//将生成的随机数累加 System.out.print("随机数为:" + arr[i]); } 2.再进行累加操作 for (int i = 0; i < arr.length; i++) { sum = sum + arr[i];//将生成的随机数累加 }
三、编写代码时尽量做到高内聚低耦合!!!
一、什么是高内聚耦合呢?
1.高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低。
2.从模块粒度来看,高内聚:尽可能类的每个成员方法只完成一件事(最大限度的聚合); 低耦合:减少类内部,一个成员方法调用另一个成员方法。
3.从类角度来看, 高内聚低耦合:减少类内部,对其他类的调用;
4.从功能块来看 高内聚低耦合:减少模块之间的交互复杂度(接口数量,参数数据)即横向:类与类之间、模块与模块之间;纵向:层次之间;尽可能,内容内聚,数据耦合。
二、使用目的:
目的是使程序模块的可重用性、移植性大大增强。
三、降低耦合度的方法及增强内聚度的方法
降低耦合度的方法:
1.少使用类的继承,多用接口隐藏实现的细节。 Java面向对象编程引入接口除了支持多态外, 隐藏实现细节也是其中一个目的。
2.模块的功能化分尽可能的单一,道理也很简单,功能单一的模块供其它模块调用的机会就少。(其实这是高内聚的一种说法,高内聚低耦合一般同时出现)。
3.遵循一个定义只在一个地方出现。
4.少使用全局变量。
5.类属性和方法的声明少用public,多用private关键字。
等等....
增强内聚度的方法:
1.模块只对外暴露最小限度的接口,形成最低的依赖关系。
2.只要对外接口不变,模块内部的修改,就不得影响其他模块。
3.删除一个模块,应当只影响有依赖关系的其他模块,而不应该影响其他无关部分。