JavaSE第4天练习题(数组)

一、 基础案例

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] ? min :arr[i];		
		}
		
		System.out.println("原数组内容:");
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]+"  ");	
		}		
		System.out.println();
		
		for (int i = 0; i < arr.length; i++) {
			if(max == arr[i]){
				arr[i]=sum/10;
			}
			if(min == arr[i]){
				arr[i]=sum/10;
			}
		}
		
		for (int i = 0; i < arr.length; i++) {
			max2 = max2>=arr[i] ? max2 :arr[i];
			min2 = min2<arr[i] ? min2 :arr[i];		
		}
		System.out.println("数组中的第二大的数字为:"+max2);
		System.out.println("数组中的第二小的数字为:"+min2);
	}
}
//这道题应该有更好的方法

5. 训练案例5 数组,循环结构,判断结构综合应用练习

5.1. 训练考核知识点
 数组,循环结构,判断结构综合应用练习
5.2. 训练描述
定义长度为10的int数组,数组中的10个元素为随机生成的1-100的数字,要求:按格式打印数组中的元素内容
举例:
数组原内容:{1,2,3,4,5}
打印的内容:[1, 2, 3, 4, 5]

public class TZ05 {
	public static void main(String[] args) {
		int[] arr = new int[10];
		Random r = new Random();
		System.out.print("数组原内容:{");
		for (int i = 0; i < arr.length; i++) {
			arr[i] = r.nextInt(100)+1;
			System.out.print(arr[i]);			
		}
		
		System.out.print("}");
		System.out.println();
		System.out.print("打印的内容:[");
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i]);			
		}
		System.out.println("]");
		
	}
}
发布了30 篇原创文章 · 获赞 10 · 访问量 901

猜你喜欢

转载自blog.csdn.net/weixin_45788152/article/details/104190758