20220716 十组 袁清清
今天分享课上的练习
public class Test05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int [] arr = new int[]{1,2,3,4,5};
// 扩容
int [] newArr = new int[arr.length * 2];
for (int j = 0; j < arr.length; j++) {
newArr[j] = arr[j];
}
arr = newArr;
main:while(true){
System.out.println("请输入要插入数据的下标:");
int index = sc.nextInt();
System.out.println("请输入要插入的数据:");
int num = sc.nextInt();
/*
1.因为数组已满,需要扩容
2.找到要插入的数据的位置
3.插入位置后面的数据需要向后移位
*/
// 定义一个临时变量,存储原来index位置的元素
// int temp = arr[index];
// // 把要插入的数存到了指定的位置
// arr[index] = num;
// // 原来位置的后面的那个数向后移一位
// arr[index + 2] = arr[index + 1];
// arr[index + 1] = temp;
// 要插入的位置的原始数据保存起来
int temp = arr[index];
// 把要插入的数据放到指定位置
arr[index] = num;
//判断要移位的数据的个数
for (int i = 1; i < arr.length - index; i++) {
arr[arr.length - i] = arr[arr.length - 1 - i];
}
arr[index + 1] = temp;
System.out.println("现在数组为:" + Arrays.toString(arr));
System.out.println("是否继续添加:1、是 2、否");
String flag = sc.next();
switch (flag){
case "1":
continue;
case "2":
System.out.println("当前数组为:" + Arrays.toString(arr));
break main;
// System.exit(-1);
}
}
}
}
public class Test03 {
public static void main(String[] args) {
// 准备一个键盘
Scanner sc = new Scanner(System.in);
int [] arr = new int[5];
/*
输入一个数,数是从后往前加
倒序输入
第一次输入的值给arr[arr.length - 1 - 0]
第二次输入的值给arr[arr.length - 1 - 1]
第三次输入的值给arr[arr.length - 1 - 2]
数组的最大下标 = 数组的长度 - 1
*/
for (int i = 0; i < arr.length; i++) {
System.out.println("请输入第" + (i+1) +"个数:");
// 输入
int num = sc.nextInt();
arr[arr.length - 1 - i] = num;
}
for (int i : arr) {
System.out.println(i);
}
}
}
public class Test04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int [] arr = new int[2];
int i = 0;
main:while(true){
System.out.println("请输入数据:");
int num = sc.nextInt();
arr[arr.length - 1 - i] = num;
i++;
if(i >= arr.length) {
int [] newArr = new int[arr.length * 2];
/*
1,2
[2,1]
[0,0,0,0]
[2,1,0,0]
[0,0,2,1]
*/
for (int j = 0; j < arr.length; j++) {
newArr[newArr.length - 1 - j] = arr[arr.length - 1 - j];
}
arr = newArr;
}
System.out.println("是否继续添加:1、是 2、否");
String flag = sc.next();
switch (flag){
case "1":
continue;
case "2":
System.out.println("当前数组为:" + Arrays.toString(arr));
break main;
// System.exit(-1);
}
}
}
}
public class Test02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
/*
有一个数组
*/
int[] arr = new int[]{4, 58, 69, 14, 22, -1};
/*
键盘输入一个下标,获取指定下标位置的数字
*/
System.out.println("请输入一个下标:");
int index = sc.nextInt();
/*
输入的这个数是否合法?
需要判断几种情况?
1.输入的是一个负值
2.输入的是一个正值,越界了
3.正确的情况
*/
if (index >= 0 && index <= arr.length - 1) {
// 合法的情况
System.out.println("对应位置的值是:" + arr[index]);
} else {
// 条件 <0 || >5
// 越界
System.out.println("你输入的数据有误,无法获取...");
}
}
}
今天主要是对昨天作业的讲解以及数组越界,倒序,插入扩容等知识的复习和练习。个人感觉挺难理解的,写又写不出来,听又听得懵懵懂懂的,还得晚上和明天多去复习练习。

浙公网安备 33010602011771号