Day7 Java学习之一维数组遍历练习体会

一、什么是数组的遍历?

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.删除一个模块,应当只影响有依赖关系的其他模块,而不应该影响其他无关部分。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值