Java数组案例:求最值、猜数字,随机交换排名

1.数组案例:数组求最值:

数组元素求最大值:

  /*
            - 需求:挑出颜值最高的美女,颜值:15,9000,10000,20000,9500,-5
            - 思路:
              - 首先,这个业务属于一开始就能确定元素值的,所以使用静态化数组来存放这些颜值元素
              - 然后,需要定义一个最大值变量,记录第一位上场美女颜值,用于与下一位上场美女的颜值进行比较
              - 再然后,使用for循环遍历:一个一个的把美女的颜值访问
              - 之后,使用if进行比较:下一位上场美女的颜值 是否大于 第一位上场美女的颜值,
                是就把第一位淘汰,替换成下一位上场美女的颜值,
                不是就没有比较的必要,直接下一位上来比较
            - 具体实现:
              1. 定义一个int类型的数组,存放美女的颜值
              2. 在循环外定义一个最大值变量,用于记录最大值,
                 变量建议默认存储数组中第一个元素值作为参照,因为要进行元素比较,所以默认值不能是 0
              3. 使用for循环来遍历每个美女的颜值
              4. 在循环内,使用if判断:
                 每次遍历到的颜值 是否大于 记录的最大值,
                 是则替换最大值,
                 不是就不进入if判断,没有判断的必要,所以有请下一位
              5. 将最高颜值输出到控制台
         */
        // 1. 定义一个int类型的数组,存放美女的颜值
        int[] faceValue = {15, 9000, 10000, 20000, 9500, -5};
        //                  0    1     2      3     4     5

        // 2. 在循环外定义一个最大值变量,用于记录最大值,
        // 变量建议默认存储数组中第一个元素值作为参照,因为要进行元素比较,所以默认值不能是 0
        int max = faceValue[0];

        // 3. 使用for循环来遍历每个美女的颜值
        // 因为最大值选择了第一个美女,如果 i = 0,就会 第一个美女 和 第一个美女 作比较,不符合实际,显得多此一举
        // 所以,i = 1,就会 第二个美女 和 第一个美女 作比较,符合实际,显得更专业,优雅
        for (int i = 1; i < faceValue.length; i++) {
            // 4. 在循环内,使用if判断:
            if (faceValue[i] > max){  // 每次遍历到的颜值 是否大于 记录的最大值,
                // 是则替换最大值,不是就不进入if判断,没有判断的必要,所以有请下一位
                max = faceValue[i];
            }
        }
        // 5.挑出最高颜值的美女后输出
        System.out.println("最高颜值:" + max);

输出结果:

Java数组案例:求最值、猜数字,随机交换排名_第1张图片

数组求最值总结
数组元素求最大值如何实现的?

首先,看业务一开始给不给确定元素值,给就用静态初始化数组,不给就用动态初始化数组,后期赋值
1.定义一个数组存放元素值
2.定义一个最大值变量,用于记录最大值(该变量建议存储数组中的第一个元素作为参照,方便与后面的每一位元素进行比较)
3.使用for循环遍历数组中的每一个元素值
3-1.在循环内使用if判断:后面的每一位元素 是否大于 记录最大值,如果是,就替换最大值为该元素;如果不是,就不进入if判读,进行下一轮循环比较,直到数组中所有元素比完,循环才结束
4.输出最大值

2.数组案例:猜数字游戏:

  • 需求:开发一个幸运小游戏,游戏规则如下:
    • 游戏后台随机生成1~20之间的5个数(无所谓是否重复),然后让大家来猜数字:
      • 未猜中提示:“未命中”,并继续猜测
      • 猜中提示:“运气不错,猜中了”,并输出该数据第一次出现的位置,且输出全部5个数据,最终结束本游戏。
      • //        int[] data = new int[5];          //1.定义一个动态初始化数组。用于存储5个1-20之间的随机幸运数
        
        //        Random r = new Random();          // 在for循环外,创建随机数random对象类,用于生成五个随机幸运数
        //        for (int i = 0; i < data.length; i++) {           //使用for循环,动态的生成五个1-20之间随机的幸运数字
        //            data[i] = r.nextInt(20)+1;            //在for循环内调用随机数功能生成五个1-20之内的随机幸运数,并赋值给动态数组
        //}
        //            Scanner sc = new Scanner(System.in);      //创建键盘录入scanner对象类,用于让大家猜幸运数
        //        OUT:
        //            while (true){                 //使用while循环,定义一个死循环,用于让大家可以不断的猜幸运数,猜中后就直接结束死循环
        //                System.out.println("猜数字");        //提示开始
        //                int guessData = sc.nextInt();
        //                for (int i = 0; i 

        输出结果:

Java数组案例:求最值、猜数字,随机交换排名_第2张图片

 猜数字游戏总结:

1、猜数字游戏的实现步骤?

首先,先看一开始能不能确定元素值,不能则使用动态初始化数组,后期赋值;能则使用静态初始化数组
1.定义一个动态初始化数组,后期动态赋值
2.使用for循环遍历,用于动态赋值给数组
3.在for循环外,创建Random随机数对象,用于生成随机数
3-1.在循环内,调用随机数功能生成随机数,赋值给数组
4.使用OUT: ——>用于为后面结束整个死循环做铺垫
5.使用while循环定义一个死循环,让大家猜数字
6.在死循环外,创建Scanner键盘录入对象类,用于让大家猜数
6-1.在死循环内,提示:让大家开始猜数,并定义一个变量用于接收大家猜的数
6-2.在死循环内,使用for循环遍历数组中的随机数
6-3.在死循环内的for循环内,使用if判断:大家猜的数 是否 在数组中,在则提示:“恭喜猜中了!”,并输出猜中的数的第一次出现的索引位置,并使用 break OUT; ——>用于结束整个死循环(结束猜数字游戏)
7.在死循环内,for循环外,假如:大家猜的数 不在 数组中,则提示:“未猜中!继续加油~~”,继续猜数
8.当结束猜数字游戏后,使用for循环遍历整个数组的随机数,输出出来

3.数组案例:随机排名

需求:

某公司开发部5名开发人员,要进行项目进展汇报演讲,现在采取随机排名后进行汇报。

请先依次录入5名员工的工号,然后展示出一组随机的排名顺序

 

分析:

首先,这个业务属于一开始就能确定元素值,虽然说可以用静态初始化数组,但是还是推荐用动态初始化数组,因为比较灵活,静态的话,写死了,非常不方便

1.定义一个动态初始化数组,长度为5,用于存储5名员工的工号,后期赋值

2.定义一个for循环,循环5次,依次录入一个工号存入对应的位置

3.在for循环外,创建Scanner键盘录入对象类,用于录入员工工号

(3-1) 在for循环内,提示:录入工号,并定义一个变量来存放录入的员工工号

(3-2) 将录入的工号赋值给数组

4.定义一个循环,遍历数组的每一个员工的工号

5.在循环外,创建Random随机数对象类,用于生成一个随机索引 与 员工的工号 进行位置交换

(5-1) 在循环内,调用随机数功能生成1个1-5之间的随机索引位置,用一个变量存放起来

(5-2) 在循环内,进行员工工号的交换操作:


步骤:

(1) 先用临时变量将 随机索引位置的B员工工号存起来;

(2) 再将当前A员工工号 赋值到 随机索引的位置;

(3) 最后再将临时变量里的B员工工号 赋值到 A员工工号的索引位置;

(4) 形成位置交换,达成随机排名

思路:

(1) 首先不能直接将 A员工工号 直接赋值给 随机的索引位置的B员工工号,不然随机的索引位置的B员工工号就会被覆盖掉,那就不是交换了,而是谋杀;
(2) 需要用一个临时变量将 随机的索引位置的B员工工号存放起来,相当于拷贝一份,然后在 将A员工工号 赋值给 随机的索引位置后,再将 B员工工号 赋值给 A员工工号,形成了工号交换操作。
Java数组案例:求最值、猜数字,随机交换排名_第3张图片

Java数组案例:求最值、猜数字,随机交换排名_第4张图片 

 

6.在for循环完成交换后,使用for循环遍历数组,展示出一组随机排名的顺序工号

你可能感兴趣的:(Java基础,数据结构)