定义一个长度为3的数组,数组存储3名学生对象作为初始数据,学生对象的学号,姓名各不 相同。
学生的属性:学号 / 姓名/ 年龄 。
要求1:再次添加一个学生对象/并在添加的时候进行学号的唯一性判断。
要求2:添加完毕之后,遍历所有学生信息。
要求3:通过id删除学生信息如果存在/则删除丿如果不存在/则提示删除失败。
要求4:删除完毕之后,遍历所有学生信息。
要求5:查询数组id为 "heima002" 的学生,如果存在,则将他的年龄+1岁。
public class Student {
private String name;
private int id;
private int age;
public Student() {
}
public Student(String name, int id, int age) {
this.name = name;
this.id = id;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
Student[] arr = new Student[3];
//创建学生对象
Student s1 = new Student("张三", 001, 18);
Student s2 = new Student("李四", 002, 21);
Student s3 = new Student("王五", 003, 22);
//把学生对象添加到数组中
arr[0] = s1;
arr[1] = s2;
arr[2] = s3;
Student s4 = new Student();
do {
//输入要添加的内容
add(s4);
boolean flag = contains(arr, s4.getId());
if (flag) {
System.out.println("id已存在!");
//再次输入
continue;
} else {
int count = getCount(arr);
if (count == arr.length) {
//已经存满
//创建一个新数组,复制原数组中的值
Student[] newArr = creatNewArr(arr);
newArr[count] = s4;
printarr(newArr);
//删除数据
System.out.print("请输入要删除的id:");
int deleteid= scan.nextInt();
int index = getIndex(newArr, deleteid);
if (index >= 0) {
//如果存在
newArr[index] = null;
printarr(newArr);
} else {
//不存在
System.out.println("当前id不存在,删除失败");
}
//修改数据
System.out.print("请输入要修改的id:");
int changeid= scan.nextInt();
int index2 = getIndex(newArr, changeid);
if (index2 >= 0) {
//如果存在
Student st = newArr[index2];
int newage = st.getAge() + 1;
st.setAge(newage);
printarr(newArr);
//退出循环
break;
} else {
//不存在
System.out.println("当前id不存在!");
break;
}
} else {
//没有存满
//[s1,s2,null]
//getCount获取到的值为2,表示数组当前已经有两个元素
//还有一层意思:如果下一次要添加数据,就是添加到2索引的位置
arr[count] = s4;
printarr(arr);
System.out.print("请输入要删除的id:");
int deleteid= scan.nextInt();
int index = getIndex(arr, deleteid);
if (index >= 0) {
//如果存在
arr[index] = null;
printarr(arr);
} else {
//不存在
System.out.println("当前id不存在,删除失败");
}
System.out.print("请输入要修改的id:");
int changeid= scan.nextInt();
int index2 = getIndex(arr, changeid);
if (index2 >= 0) {
//如果存在
Student st = arr[index2];
int newage = st.getAge() + 1;
st.setAge(newage);
printarr(arr);
//退出循环
break;
} else {
//不存在
System.out.println("当前id不存在!");
break;
}
}
}
} while (true);
}
//找到id在数组中的索引
public static int getIndex(Student[] arr,int id){
for (int i = 0; i < arr.length; i++) {
//依次得到每一个学生对象
Student st=arr[i];
if(st!=null){
if(st.getId()==id){
return i;
}
}
}
return -1;
}
//遍历数组
public static void printarr(Student[] arr){
for (int i = 0; i < arr.length; i++) {
Student stu=arr[i];
//若数组中为null不输出
if(stu!=null){
System.out.println(stu.getName()+", "+stu.getId()+", "+stu.getAge());
}
}
}
//复制原数组的数据
public static Student[] creatNewArr(Student[] arr) {
Student[] newArr=new Student[arr.length+1];
for (int i = 0; i < arr.length; i++) {
newArr[i]=arr[i];
}
return newArr;
}
//返回数组中有多少元素
public static int getCount(Student[] arr){
int count=0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]!=null){
count++;
}
}
return count;
}
//查找id
public static Boolean contains(Student[] arr,int id){
for (int i = 0; i < arr.length; i++) {
Student st=arr[i];
if(st!=null) {
int sid = st.getId();
if (sid == id) {
return true;
}
}
}
return false;
}
//输入新的学生信息
public static Student add(Student s4){
Scanner scan=new Scanner(System.in);
System.out.print("姓名:");
s4.setName(scan.next());
System.out.print("学号:");
s4.setId(scan.nextInt());
System.out.print("年龄:");
s4.setAge(scan.nextInt());
return s4;
}
}
姓名:蒙古国海军司令
学号:004
年龄:24
张三, 1, 18
李四, 2, 21
王五, 3, 22
蒙古国海军司令, 4, 24
请输入要删除的id:2
张三, 1, 18
王五, 3, 22
蒙古国海军司令, 4, 24
请输入要修改的id:4
张三, 1, 18
王五, 3, 22
蒙古国海军司令, 4, 25