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】
定义一个内部循环,控制每轮依次往后比较几个位置【数组长度-i-1】
如果当前位置的元素值》后一个元素值,两者交换 - 选择排序
- 快速排序
- 插入排序
数据搜索的相关技术
- 二分搜索
- 分块搜索
- 哈希表查找
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");
}
}
}