есть приложение, в котором создаются/удаляются студенты, как мне добавить функцию изменения данных "editStudent()"?
package university;
public class University {
String name;
Student[] students;
public University(String name) {
this.name = name;
students = new Student[0];
}
public Student[] getStudents() {
return this.students;
}
public void addStudent(Student student) {
Student[] tempStudents = new Student[students.length + 1];
for (int i = 0; i < students.length; i++) {
tempStudents[i] = students[i];
}
tempStudents[tempStudents.length - 1] = student;
students = tempStudents;
}
public void removeStudent(Student student) {
// Перебираем весь массив студентов
for (int i = 0; i < students.length; i++) {
// Проверяем, существует ли такой студент
if (students[i].equals(student)) {
// если существует, то ...
// создаем массив на 1 меньше, чем оригинал
Student[] tempStudents = new Student[students.length - 1];
// помечаем юзера null-ом, чтобы не переносить в новый массив
students[i] = null;
// Перебираем массив студентов, чтобы перенести их в новых массив
// и определяем для этого счетчик нового массива
int counterOfUsersWhichAreMovedToNewArray = 0;
for (int j = 0; j < students.length; j++) {
// Переносим только тех, что не null
if (students[j] != null) {
// В ячейку нового массива вставляем юзера из старого
tempStudents[counterOfUsersWhichAreMovedToNewArray] = students[j];
// Увеличиваем счетчик юзеров нового массива на 1
counterOfUsersWhichAreMovedToNewArray++;
}
}
// Говорим, что переменная класса теперь ссылается на новый массив
students = tempStudents;
break;
}
}
}
}
// Класс с студентом ниже
package university;
import java.util.Objects;
public class Student {
String name;
public Student(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Student)) return false;
Student student = (Student) o;
return name.equals(student.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
Основной класс Ниже
package university;
public class Run {
public static void main(String[] args) {
University univer = new University("ONPU");
Student student1 = new Student("Vasya");
Student student2 = new Student("Petya");
Student student3 = new Student("Kolya");
System.out.println("Start");
System.out.println(univer.students.length);
univer.addStudent(student1);
System.out.println("Added 1 student");
System.out.println(univer.students.length);
univer.addStudent(student2);
System.out.println("Added 1 student");
System.out.println(univer.students.length);
univer.removeStudent(student2);
System.out.println("Removed 1");
System.out.println(univer.students.length);
univer.removeStudent(student3);
System.out.println("Removed non existed");
System.out.println(univer.students.length);
}
}
Ответы (1 шт):
Автор решения: Maxim Shalyugin
→ Ссылка
public Student findStudentByName(String name) {
for (int i = 0; i < students.length; i++){
if (name.equals(students[i].name))
{
return students[i];
}
}
return null;
}
public void updateStudentByName(String oldName, String newName)
{
Student student = findStudentByName(oldName);
student.name = newName;
}
что то в этом роде