2022Java学习笔记十二(数组的遍历,数组遍历求和,数组排序,数组随机排名案例,数组猜数字游戏案例,数组求最大值案例,数据遍历求和案例)

2022Java学习笔记十二(数组的遍历,数组遍历求和,数组排序,数组随机排名案例,数组猜数字游戏案例,数组求最大值案例,数据遍历求和案例)

遍历:就是逐个数据的访问

数组遍历的快捷键【数组名.fori+回车】

package com.zcl.traverse;

public class Demo {
    
    
    public static void main(String[] args) {
    
    
        // 创建数组
        int age[] = {
    
    1,2,3,4,5,68,54,652};
        // 遍历数组(快捷键 数组名.fori+回车)
        for (int i = 0; i < age.length; i++) {
    
    
            System.out.println(age[i]);
        }
    }
}

数据遍历求和案例

需求:
某部门5位员工的销售额分别是:16,32,8,100,78计算部门的总销售额

package com.zcl.traverse;

public class DemoTest {
    
    
    public static void main(String[] args) {
    
    
        // 数组元素求和
        int[] money = {
    
    16,32,8,100,78};
        // 定义求和变量
        int sum = 0;
        // 遍历数组中的元素
        for (int i = 0; i < money.length; i++) {
    
    
            sum+=money[i];
        }
        System.out.println("数组的和是:"+sum);
    }
}

数组求最大值案例

定义一个数组,比较最大值

package com.zcl.traverse;

public class tese {
    
    
    public static void main(String[] args) {
    
    
        // 求数组最大值
        // 定义静态测试数组
        int[] arr = {
    
    12,445,4548,1242,15,-5};
        // 定义最大值变量,建议使用数组第一个元素作为参照
        int max = arr[0];
        // 遍历数组的每一个元素,依次比较数据,大的替换
        for (int i = 0; i < arr.length; i++) {
    
    
            if(arr[i] > max){
    
    
                max=arr[i];
            }
        }
        System.out.println("数组的最大值是:"+max); // 4548
    }
}

数组猜数字游戏案例

package com.zcl.traverse;

import java.util.Random;
import java.util.Scanner;

public class test2 {
    
    
    public static void main(String[] args) {
    
    
        // 定义动态初始化数组
        int[] arr = new int[5];
        // 随机生成五个1-20之间的数据存储动态数组中
        Random r = new Random();
        for (int i = 0; i < arr.length; i++) {
    
    
            arr[i] = r.nextInt(20)+1;
        }
        Scanner sc = new Scanner(System.in);

        OUT:
        // 使用死循环进行猜测
        while (true){
    
    
            System.out.println("请猜测1-20之间的数字:");
            int guessData = sc.nextInt();
            // 遍历数组,看是否有猜中
            for (int i = 0; i < arr.length; i++) {
    
    
                if(arr[i] == guessData){
    
    
                    System.out.println("您猜中了缩影是:"+i);
                    break OUT;
                }
            }
            System.out.println("当前猜测数据不存在");
        }
        // 输出全部元素,让用户看到
        for (int i = 0; i < arr.length; i++) {
    
    
            System.out.print(arr[i]+"\t");
        }
    }
}

数组随机排名案例
扑克牌游戏可以用来洗牌

package com.zcl.traverse;

import java.util.Random;
import java.util.Scanner;

public class test3 {
    
    
    public static void main(String[] args) {
    
    
        // 动态初始化数组
        int[] codes = new int[5];

        // 2、定义循环5次,依次录入工号
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < codes.length; i++) {
    
    
            // 正式录入工号
            System.out.println("请输入第"+(i+1)+"个工号信息");
            int code = sc.nextInt();
            // 存入数组中
            codes[i] = code;
        }

        // 遍历数组中的元素,随机一个索引进行交换(重点)
        Random r = new Random();
        for (int i = 0; i < codes.length; i++) {
    
    
            // 当前遍历的元素值codes[i]
            // 随机一个索引出来
            int index = r.nextInt(codes.length);
            // 定义一个临时变量存储index
            int temp = codes[index];
            codes[index]=codes[i];
            codes[i]=temp;
        }

        // 4、遍历数组元素输出
        for (int i = 0; i < codes.length; i++) {
    
    
            System.out.print(codes[i]+"\t");
        }
    }
}

数组的排序

就是对数组中的元素,进行升序(由小到大)或降序(由大到小)的操作

排序的技术:

  1. 冒泡排序
    每次从数组中找出最大值放在数组的后面去
    思想:
    从头开始两两比较,把较大的元素与较小的元素进行交换
    没轮把当前最大的一个元素存入到数组当前的末尾
    实现步骤:
    定义一个外部循环控制总共需要冒几轮【数组的长度-1】
    定义一个内部循环,控制每轮依次往后比较几个位置【数组长度-i-1】
    如果当前位置的元素值》后一个元素值,两者交换
  2. 选择排序
  3. 快速排序
  4. 插入排序

数据搜索的相关技术

  1. 二分搜索
  2. 分块搜索
  3. 哈希表查找
package com.zcl.traverse;

public class test4 {
    
    
    public static void main(String[] args) {
    
    
        // 目标:数组冒泡排序
        // 1、定义数组,存储数据
        int[] arr = {
    
    5,3,2,9};
        // 2、定义一个循环控制比较轮次
        for (int i = 1; i <= arr.length-1; i++) {
    
    
            // i==1 i==2 i==3
            // 次数3    2    1
            // 3、定义一个循环每轮比较次数,占位
            for (int j = 0; j < arr.length-1; j++) {
    
    
                // 判断j当前位置的元素,是否大于后一个位置,大的替换
                if(arr[j] > arr[j+1]){
    
    
                    int temp = arr[j+1];
                    arr[j+1]=arr[j];
                    arr[j]=temp;
                }
            }
        }
        // 遍历数组内容输出
        for (int i = 0; i < arr.length; i++) {
    
    
            System.out.print(arr[i]+"\t");
        }
    }
}

猜你喜欢

转载自blog.csdn.net/baidu_39378193/article/details/122933209