文章目录 一、 基础案例1. 训练案例1 求数组中所有元素的最小值2. 训练案例2 数组和随机数综合3. 训练案例3 数组以及遍历数组综合4. 训练案例4 数组和判断语句综合5. 训练案例5 数组和判断语句综合6. 训练案例6 第二十个月的兔子对数为多少二、 扩展案例1. 训练案例1 数组,循环结构,判断结构综合应用练习2. 训练案例2 数组,键盘录入,随机数3. 训练案例3 键盘录入,数组,循环,if4. 训练案例4 数组,循环结构,判断结构综合应用练5. 训练案例5 数组,循环结构,判断结构综合应用练习 一、 基础案例 1. 训练案例1 求数组中所有元素的最小值 1.1. 训练考核知识点  能够完成数组的求最值 1.2. 训练描述 定义一个含有五个元素的数组,并为每个元素赋值,求数组中所有元素的最小值 1.3. 操作步骤描述 1.定义5个元素数组 2.可以使用初始化数组的两种方式之一为数组元素赋值 3.遍历数组求数组中的最小值 public class Test01 { public static void main(String[] args) { int[] arr = {5,9,8,3,4}; int a = arr[0]; for (int i = 1; i < arr.length; i++) { a = a <= arr[i] ? a : arr[i]; } System.out.println("数组中所有元素的最小值:"+a); } } 2. 训练案例2 数组和随机数综合 2.1. 训练考核知识点  数组和随机数综合 2.2. 训练描述 定义一个长度为3的一维数组,给每个元素赋值. (要求数组中每个元素的值是0-9的随机数) 遍历数组打印每个元素的值 2.3. 操作步骤描述 1.定义长度为3的数组 2.创建Random引用数据类型的变量 3.生成3个0-9的随机数,为每一个元素赋值(可以用循环,也可以不使用循环) 4.遍历数组,并打印每一个元素 import java.util.Random; public class Test02 { public static void main(String[] args) { Random r = new Random(); double[] i = new double[3]; for (int j = 0; j < i.length; j++) { i[j] = r.nextDouble()*9; System.out.println(i[j]); } } } 3. 训练案例3 数组以及遍历数组综合 3.1. 训练考核知识点  数组以及遍历数组综合 3.2. 训练描述 已知数组int[] nums = {5,10,15},要求创建一个新数组 1.新数组的长度和已知数组相同 2.新数组每个元素的值 是已知数组对应位置元素的2倍 3.在控制台中打印新数组的所有元素 3.3. 操作步骤描述 1.定义题目要求的已知数组 2.定义题目要求的新数组 3.根据条件为新数组中每个元素赋值 4.遍历新数组打印到控制台中 public class Test03 { public static void main(String[] args) { int[] nums = {5,10,15}; int[] news = new int[nums.length]; for (int i = 0; i < news.length; i++) { news[i] = nums[i]*2; System.out.println("新数组的元素有"+news[i]); } } } 4. 训练案例4 数组和判断语句综合 4.1. 训练考核知识点  数组和判断语句综合 4.2. 训练描述 键盘录入一个整数,创建一个该长度的数组,为每一个元素赋值为1-10的随机整数,最后打印数组中所有值大于5且为偶数的元素. 4.3. 操作步骤描述 1键盘录入一个整数 2定义长度为该整数的数组 3创建Random引用数据类型的变量 4生成5个0-9的随机数,为每一个元素赋值(建议用循环) 5 遍历数组,输出满足条件的元素 import java.util.Random; import java.util.Scanner; public class Test04 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("录入一个整数,即可创建一个该长度的数组"); int a = input.nextInt(); int[] arr = new int[a]; Random r = new Random(); for (int i = 0; i < arr.length; i++) { arr[i] = r.nextInt(10)+1; if ((arr[i] >5) & (arr[i]%2==0)) { System.out.println("数组中大于5且为偶数的元素有:"+arr[i]); } } } } 5. 训练案例5 数组和判断语句综合 5.1. 训练考核知识点  数组和判断语句综合 5.2. 训练描述 在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。 选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值。 请写代码实现。(不考虑小数部分) 5.3. 操作步骤描述 A:定义一个长度为6的数组 B:评委打分的数据采用键盘录入实现 C:写代码获取数组的最大值(最高分) D:写代码获取数组的最小值(最低分) E:写代码求数组中的元素和(总分) F:平均分:(总分-最高分-最低分)/(arr.length-2) G:输出平均分即可 import java.util.Scanner; public class Test05 { public static void main(String[] args) { int[] arr = new int[6]; Scanner input = new Scanner(System.in); int min = 100; int max = 0; int sum = 0; for (int i = 0; i < arr.length; i++) { System.out.println("请第"+(i+1)+"位评委为参赛的选手打分,分数为0-100的整数分"); arr[i] = input.nextInt(); min = min<=arr[i] ? min:arr[i]; max = max>=arr[i] ? max:arr[i]; sum += arr[i]; } System.out.println("去掉一个最高分:"+max+" 和一个最低分:"+min+",4个评委平均值:"+(sum - max -min)/4); } } 6. 训练案例6 第二十个月的兔子对数为多少 6.1. 训练考核知识点  数组 6.2. 训练描述 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少? 第一个月:1 第二个月:1 第三个月:2 第四个月:3 第五个月:5 … 从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和 第一个月和第二个月的兔子对数都是1 6.3. 操作步骤描述 A:由于数据比较多,所以我们定义数组实现 int[] arr = new int[20]; B:给数组中的元素赋值 arr[0] = 1; arr[1] = 1; C:从第三个月开始,根据规律赋值 arr[2] = arr[1] + arr[0]; arr[3] = arr[2] + arr[1]; arr[4] = arr[3] + arr[2]; … D:输出第二十个月的兔子对数,其实就是输出arr[19] public class Test06 { public static void main(String[] args) { int arr[] = new int[20]; arr[0] = 1; arr[1] = 1; for (int i = 2; i < arr.length; i++) { arr[i] = arr[i-1] +arr[i-2]; } System.out.println("第二十个月的兔子对数为"+arr[arr.length-1]); } } 二、 扩展案例 1. 训练案例1 数组,循环结构,判断结构综合应用练习 1.1. 训练考核知识点  数组,循环结构,判断结构综合应用练习 1.2. 训练描述 将数字1-10保存到一个长度为10的一维数组中 定义一个新数组,长度为3,取出原来数组中随机三个元素(不考虑是否重复) 给新数组的元素赋值 求新数组所有元素的和 import java.util.Random; public class TZ01 { public static void main(String[] args) { int[] arr = {1,2,3,4,5,6,7,8,9,10}; int[] arr2 = new int[3]; int sum = 0; Random r = new Random(); System.out.print("新数组的值:"); for (int i = 0; i < arr2.length; i++) { arr2[i] = arr[r.nextInt(10)]; System.out.print(arr2[i]+","); sum += arr2[i]; } System.out.print("新数组所有元素的和:"+sum); } } 2. 训练案例2 数组,键盘录入,随机数 2.1. 训练考核知识点  数组,键盘录入,随机数, 2.2. 训练描述 分析以下需求,并用代码实现 1.键盘录入班级人数 2.根据录入的班级人数创建数组 3.利用随机数产生0-100的成绩(包含0和100) 4.要求: (1)打印该班级的不及格人数 (2)打印该班级的平均分 (3)演示格式如下: 请输入班级人数: 键盘录入:100 控制台输出: 不及格人数:19 班级平均分:87 2.3. 操作步骤描述 1.创建键盘录入对象 2.定义int类型的变量num,并通过键盘录入给num赋值 3.创建int类型的数组,数组长度为num 4.创建Random对象 5.遍历数组 (1)随机产生[0-100]的值 (2)将随机产生的数值赋值给数组中的当前元素 6.定义变量count用于统计不及格学员数量,定义变量sum用于统计总分 7.遍历数组 (1)将当前元素的值累加到sum中 (2)判断当前元素的值如果<60,count++ 8.打印不及格数量和平均分(sum/num) public class TZ02 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("录入班级人数:"); int person = input.nextInt(); int[] grade = new int[person]; int un = 0; int sum = 0; Random r = new Random(); for (int i = 0; i < grade.length; i++) { grade[i] = r.nextInt(101); if (grade[i]<60) { un++; } sum += grade[i]; } System.out.println("不及格人数:"+un); System.out.println("班级平均分:"+sum/person); } } 3. 训练案例3 键盘录入,数组,循环,if 3.1. 训练考核知识点  键盘录入,数组,循环,if 3.2. 训练描述 假设有一个长度为5的数组,数组元素通过键盘录入,如下所示: int[] arr = {1,3,-1,5,-2} 要求: 创建一个新数组newArr[],新数组中元素的存放顺序与原数组中的元素逆序,并且如果原数组中的元素值小于0, 在新数组中按0存储。最后输出原数组和新数组中的内容 打印格式: 请输入5个整数: 1 3 -1 5 -2 原数组内容: 1 3 -1 5 -2 新数组内容: 0 5 0 3 1 import java.util.Scanner; public class TZ03 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("输入长度为5的数组"); int[] arr = new int[5]; int[] arr2 = new int[5]; for (int i = 0; i < 5; i++) { arr[i] = input.nextInt(); arr2[4-i] = arr[i]; if (arr2[4-i]<0) { arr2[4-i] =0 ; } } System.out.println("原数组内容:"); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]+" "); } System.out.println("新数组内容:"); for (int i = 0; i < 5; i++) { System.out.print(arr2[i]+" "); } } } 4. 训练案例4 数组,循环结构,判断结构综合应用练 习 4.1. 训练考核知识点  数组,循环结构,判断结构综合应用练习 4.2. 训练描述 定义长度为10的int数组,数组中的10个元素为随机生成的1-100的数字,要求:打印数组中第二大的数和第二小的数字 打印格式: 原数组内容 90 34 12 35 98 23 17 71 4 66 数组中的第二大的数字为:90 数组中的第二小的数字为:12 import java.util.Random; public class TZ04 { public static void main(String[] args) { int[] arr = new int[10]; Random r = new Random(); int max = 0; int max2 =0; int min = 100; int min2 = 100; int sum =0; for (int i = 0; i < arr.length; i++) { arr[i] = r.nextInt(100)+1; sum += arr[i]; max = max>=arr[i] ? max :arr[i]; min = min=arr[i] ? max2 :arr[i]; min2 = min2