编写一个Java程序定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。 学生的属性:学号,姓名,年龄。 要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。 要求2:添加完毕之后,遍历所有学生信息。 要求3:通过id删除学生信息 如果存在,则删除,如果不存在,则提示删除失败。 要求4:删除完毕之后,遍历所有学生信息。 要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁
时间: 2023-12-30 12:03:24 浏览: 88
好的,这是一个关于数组和对象的问题,我会尽力回答。
首先,我们可以定义一个长度为3的数组,存储3个学生的对象:
```java
Student[] students = {
new Student("heima001", "Alice", 18),
new Student("heima002", "Bob", 19),
new Student("heima003", "Cathy", 20)
};
```
每个学生都是一个`Student`对象,包含了学号、姓名和年龄三个属性。
接下来,我们可以再次添加一个学生对象,并在添加的时候进行学号的唯一性判断:
```java
Student newStudent = new Student("heima004", "David", 21);
boolean exists = false;
for (Student student : students) {
if (student.getId().equals(newStudent.getId())) {
System.out.println("Error: Student id already exists");
exists = true;
break;
}
}
if (!exists) {
students = Arrays.copyOf(students, students.length + 1);
students[students.length - 1] = newStudent;
System.out.println("New student added: " + newStudent);
}
```
这里我们使用了一个循环,遍历了每个学生的学号,如果有学号与新学生的学号相同,就输出错误提示并且跳出循环,否则就把新学生添加到数组中,并输出添加成功的信息。
需要注意的是,由于Java数组的长度是固定的,我们不能直接往数组中添加新元素。所以我们可以使用`Arrays.copyOf()`方法来创建一个新的数组,长度+1,并将原数组中的所有元素复制到新数组中,然后再把新学生对象添加到新数组的末尾。
然后,我们可以遍历所有学生信息:
```java
for (Student student : students) {
System.out.println(student);
}
```
这里我们使用了一个增强型for循环,遍历了每个学生的信息,并把它们打印出来。
接着,我们可以通过id删除学生信息:
```java
String deleteId = "heima002";
boolean deleted = false;
for (int i = 0; i < students.length; i++) {
if (students[i].getId().equals(deleteId)) {
System.out.println("Student deleted: " + students[i]);
students[i] = null;
deleted = true;
break;
}
}
if (!deleted) {
System.out.println("Error: Student not found");
} else {
students = Arrays.stream(students).filter(Objects::nonNull).toArray(Student[]::new);
}
```
这里我们又使用了一个循环,遍历了每个学生的学号,如果有学号与要删除的id相同,就把这个学生对象从数组中删除,并输出删除成功的信息。如果遍历完了数组都没有找到要删除的学生,就输出错误提示。
需要注意的是,由于Java数组的长度是固定的,我们不能直接删除数组中的元素。所以我们可以先把要删除的学生对象置为`null`,然后使用Java 8中的`stream` API来过滤掉数组中的`null`元素,并重新创建一个新的数组。
最后,我们可以遍历所有学生信息:
```java
for (Student student : students) {
if (student != null) {
System.out.println(student);
}
}
```
这里我们使用了一个增强型for循环,遍历了每个非空的学生的信息,并把它们打印出来。
最后,我们可以查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁:
```java
String queryId = "heima002";
boolean found = false;
for (Student student : students) {
if (student.getId().equals(queryId)) {
student.setAge(student.getAge() + 1);
System.out.println("Student found and age updated: " + student);
found = true;
break;
}
}
if (!found) {
System.out.println("Error: Student not found");
}
```
这里我们又使用了一个循环,遍历了每个学生的学号,如果有学号与要查询的id相同,就把这个学生的年龄加1,并输出更新成功的信息。如果遍历完了数组都没有找到要查询的学生,就输出错误提示。
希望这个回答能够帮助你解决问题。
阅读全文