2022-07-16 第六组 李俊琦 Java基础入门04
Java入门讲义04
今日重点
- 员工管理系统
- 倒叙插入
- 数组插入
学习内容
数组插入
package com.jroft.afternoon;
import java.util.Arrays;
import java.util.Scanner;
public class Ch04 {
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 = 0; i < arr.length - index; i++) {
arr[arr.length - 1]= 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 ;
}
}
}
}
倒叙插入
package com.jroft.afternoon;
import java.util.Scanner;
public class Ch02 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int [] arr=new int[5];
/*
输入一个数,数是从后往前加
倒叙输入
第一次输入的值给[arr.length-1-0]
第二次输入的值给[arr.length-1-1]
第三次输入的值给[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] = num;
}
for (int i : arr){
System.out.println(i);
}
}
}
员工管理系统
点击查看代码
Scanner sc = new Scanner(System.in);
System.out.println("欢迎使用员工管理系统:");
int id = 1001; //员工编号
int index = 0; // 下标
int [] nos = new int[2];
String [] names = new String[2];
system:
while (true) {
System.out.println("请选择功能:1.添加员工 2.查询员工 3.修改员工 4.删除员工 5.按其他任意键退出系统");
String flag = sc.next();
switch (flag) {
case "1":
System.out.println("请输入员工姓名");
String name = sc.next();
/*
1.工号(自动生成自动递增)
2.员工姓名
工号和姓名保存到数组
int [] nos = new int[2];
String [] names = new String[2];
要考虑扩容问题
*/
if (nos.length - 1 <= index) {
int [] nosTemp = new int[nos.length*2];
String [] namesTemp = new String[nos.length*2];
for (int i = 0; i < nos.length; i++) {
nosTemp[i] = nos[i];
namesTemp[i] = names[i];
}
nos = nosTemp;
names = namesTemp;
}
nos[index] = id;
names[index] = name;
System.out.println("添加员工成功!");
System.out.println("员工信息为:工号-" + nos[index] + " 姓名-" + names[index]);
index += 1;
id += 1;
break;
case "2":
/*
根据工号查询
如果有能力,可以根据姓名查询,姓名可以重名
*/
System.out.println("请输入工号进行查询:");
int selection = sc.nextInt();
for (int i = 0; i < nos.length; i++) {
if (selection == nos[i]) {
System.out.println("该员工的姓名为:" + names[i]);
break;
} else if (i == nos.length - 1) {
System.out.println("您要查询的员工不存在,请确认输入是否正确。");
}
}
break;
case "3":
/*
修改两个操作:先输入员工号,查询员工号存在性,若不再,员工号输入有误,在,
先显示原有信息,再修改。
*/
System.out.println("请输入要修改的员工号:");
selection = sc.nextInt();
for (int i = 0; i < nos.length; i++) {
if (selection == nos[i]) {
System.out.println("该员工原来的姓名为:" + names[i]);
System.out.print("请输入要更改的姓名: ");
name = sc.next();
names[i] = name;
System.out.println("修改成功,修改后的姓名为:" + names[i]);
break;
} else if (i == nos.length - 1) {
System.out.println("您要修改的员工不存在,请确认输入是否正确。");
}
}
break;
case "4":
/*
数组删除元素:
10个元素删除第五个
int [] = 0
String [] = null
*/
System.out.println("请输入要删除的员工号:");
selection = sc.nextInt();
for (int i = 0; i < nos.length; i++) {
if (selection == nos[i]) {
System.out.println("该员工的姓名为:" + names[i] + " 是否要删除?\n输入1删除,其他键退出");
int delete = sc.nextInt();
if (delete == 1) {
nos[i] = 0;
names[i] = null;
index -= 1;
id -= 1;
System.out.println("删除成功!");
} else break;
break;
} else if (i == nos.length - 1) {
System.out.println("您要查询的员工不存在,请确认输入是否正确。");
}
}
break;
default:
System.out.println("退出成功,感谢您的使用!");
break system;
}
}
学习心得
通过今天对作业的理解与学习
我对数组的操作有了更加深刻的认识
在作业的回顾中我也认识并完善了自己知识的不足
在实际操作过程中的错误也得到了纠正

浙公网安备 33010602011771号