JAVA 练习题
随手写的课后练习题😋
题目一
📝请创建一个长度为6的整数数组,并为数组中的元素赋值,然后遍历数组,打印所有元素,元素之间用空格隔开
✏依题意先定义数值:
int[] Arr = new int[6];
✏然后使用For循环为数组初始化赋值:
for(int i = 0;i < Arr.length;i++){
Arr[i] = i;
}
✏最后打印注意使用空格隔开
for(inti = 0 ;i < Arrlength;i++){
System.out.print(Arr[i] + " ");
}
最后完美散花🎉
源码✨:
int[] Arr = new int[6];
for(int i = 0; i < Arr.length; i++)
Arr[i] = i;
for(int i = 0; i < Arr.length; i++)
System.out.println(Arr[i] + " ");
题目二
📝现有一个小数数组{12.9, 53.54, 75.0, 99.1, 3.14}请编写代码,找出数组中的最小值并打印
✒数组中的元素含有小数,所以使用Double类型(别问为什么不用float)
double[] Arr = {12.9, 53.54, 75.0, 99.1, 3.14}
✒先认为数组中的下标0元素是最小的
double Min = Arr[0];
✒然后循环判断,如果下一个元素小于我们上面认为最小的元素,那么就重新对Min进行赋值
for(int i = 1; i < Arr.length;i++)
if(Min > Arr[i])
Min = Arr[i];
这里的For循环之所以初始化从1开始,是因为0号元素以及被我们认定为最小值,所以就不用与自身做比较
🎉最后输出结果就完成啦~
System,out.println("最小值:" + Min);
源码✨:
double[] Arr = {12.9,53.54,75.0,99.1,3.14};
double Min = Arr[0];
for(int i = 1; i < Arr.length ; i++)
if(Min > Arr[i])
Min = Arr[i];
System.out.println("最小值:" + Min);
题目三
📝创建一个长度为6的整数数组,随机生成六个0(包含) - 100(不包含)之间的整数存放到数组中,然后计算出数组中所有元素的和并打印
🖋依题意,先定义一个元素个数为6的数组
int[] Arr = new Arr[6];
🖋然后要求生成随机数,且指定范围为 [0,100),在这里我们使用Eandom类,它实现的随机算法是伪随机,也就是有规则的随机,需要为它传入一个种子数,然后再次基础上生成随机数
🖋所以先定义Random对象
Random Ran = new Random();
不要忘记导入import java.util.Random
🖋由于题目要求计算数组的和,所以再定义一个变量Sum,用于存放计算和
int Sum = 0;
🖋使用For循环为每一个元素赋值,依题意将种子数设为100,生成的数范围在0 - 99中
for(int i = 0; i < Arr.length ;i ++)
Arr[i] = Ran.nextInt(100);
🖋用For循环计算数组的每一位之和,最后打印输出就可以啦~🎉
for(int i = 0; i < Arr.length; i++)
Sum += Arr[i];
System.out.println("数组之和为:" + Sum);
源码✨:
//import java.util.Random;
int[] Arr = new int[6];
Random Ran = new Random();
int Sum = 0;
for(int i = 0; i < Arr.length ;i ++)
Arr[i] = Ran.nextInt(100);
for(int i = 0; i < Arr.length; i++)
Sum += Arr[i];
System.out.println("数组之和为:" + Sum);
题目四
📝现有一个整数数组,数组中的每个元素都是[0-9]之间的数字,从数组的最大索引位置开始到最小索引位置,依次表示整数的个位、十位、百位... 依次类推,请编写程序计算,这个数组所表示的整数值
📌先定义数组,然后使用随机数填充(这里就不展开介绍了)
int[] Arr = new int[6];
Random Ran = new Random();
for(int i = 0; i < Arr.length; i++)
Arr[i] = Ran.nextInt(10);
需要注意,每一位的数字在 0 - 9 范围内
📌然后将数组的内容逐位输出就好啦~
for(int i = 0; i < Arr.length; i++) {
System.out.print(Arr[i]);
源码✨:
int[] Arr = new int[6];
Random Ran = new Random();
for(int i = 0; i < Arr.length; i++)
Arr[i] = Ran.nextInt(10);
System.out.print("这个数是:");
for(int i = 0; i < Arr.length; i++)
System.out.print(Arr[i]);
题目五
📝一个数组,其中有十个元素从小到大依次排列{12,14,23,45,66,68,70,77,90,91}再通过键盘录入一个整数数字
要求:把数字放入数组序列中,生成一个新的数组,并且数组的元素依旧是从小到大排列的
🎯题目要求输入数据,所以我们使用Scanner
//import java.util.Scanner;
Scanner Scan = new Scanner(System.in);
🎯在定义题目中已知的数组,由于要产生一个新数组,所以在定义一个比题目中大1的数组(因为插入的数据需要占用1位)
int[] Arr1 = {12,14,23,45,66,68,70,77,90,91};
int[] Arr2 = new int[Arr1.length + 1];
🎯然后键盘输入
System.out.print("输入值:");
int In = Scan.nextInt();
Scan.close();
🎯题目中要求插入后的数组仍然是从小到大排列,所以我们就要去查找插入点,而不是在末尾插入
int Ma = 0;
//寻找插入点并插入
for(Arr2[Ma] = In ; Ma < Arr1.length ; Arr2[++Ma] = In)
if(In <= Arr1[Ma]) break;
🎯For循环中三个语句块,其中第一个会首先执行一遍,一般用于循环变量的定义
🎯在考虑到最坏的情况是一次也没有执行,所以先将用户输入的数值放到头部
🎯第二个语句块中是结束循环的条件,这里为数组的长度,在循环之前也会检查是否符合条件,不符合就不会执行
🎯第三个语句块中会For语句块中的代码执行一遍后执行,由于For语句块中的代码含有break,如果在此次循环中没有跳出,那么说明其中if条件不成立,证明用户输入的数值大于当前数组中的值,在这里做前++后,并赋值,继续下一次循环,如果if条件成立,for循环被break,那么说明用户输入的数值大于数组当前的值,所以跳出循环,第三个语句块也不会被执行,仍然保留上一次的执行结果
🎯这个时候用户输入的数据已经被插入到了新数组中,但是仍然缺少原数组中的值,所以要将原数组从指定位置分割,依次填充前面的数据和后面的数据
//填充前数据
for(int i = 0 ; i < Ma ; Arr2[i] = Arr1[i++]);
🎯这里填充前数据的末尾在刚刚得到的插入点Ma
//填充后数据
for(Ma++ ; Ma < Arr2.length ; Arr2[Ma] = Arr1[Ma++ - 1]);
🎯既然Ma为插入点,直接从Ma后插入数据
🎯最后验证结果
System.out.println("插入前:" + Arrays.toString(Arr1));
System.out.println("插入后:" + Arrays.toString(Arr2));
源码✨:
Scanner Scan = new Scanner(System.in);
int[] Arr1 = {12,14,23,45,66,68,70,77,90,91};
int[] Arr2 = new int[Arr1.length + 1];
//输入数据
System.out.print("输入值:");
int In = Scan.nextInt(); int Ma = 0; Scan.close();
//寻找插入点并插入
for(Arr2[Ma] = In ; Ma < Arr1.length ; Arr2[++Ma] = In)
if(In <= Arr1[Ma]) break;
//填充前后数据
for(int i = 0 ; i < Ma ; Arr2[i] = Arr1[i++]);
for(Ma++ ; Ma < Arr2.length ; Arr2[Ma] = Arr1[Ma++ - 1]);
//验证结果
System.out.println("插入前:" + Arrays.toString(Arr1));
System.out.println("插入后:" + Arrays.toString(Arr2));
😋完美散花~