HashSet Список студентов?

Не могу разобраться в задании: Вы разрабатываете систему учета студентов. Для каждого студента нужно хранить следующие данные – ФИО, номер группы, номер студенческого билета. Уникальным идентификатором является номер студенческого билета. Пользователь вводит данные студентов в бесконечном цикле до ввода команды "end". По окончании ввода программа должна вывести список студентов. Структура данных, куда сохраняются студенты, должна отбрасывать ввод одного и того же студента более одного раза. Учитывайте, что имена у людей могут быть одинаковыми, а номера документов – нет.

import java.util.HashSet;
import java.util.Scanner;
import java.util.Iterator;
import java.util.Set;

public class Main {

    public static void main(String[] args) {
        Set<Student> listOfStudents = new HashSet<>();
        Scanner scanner = new Scanner(System.in);

        System.out.println("Введите информацию о студенте: \"ФИО, номер группы, номер студенческого билета\"");

        while (true) {
            String input = scanner.nextLine();
            System.out.println("Введите информацию о студенте (для завершения работы программы введите \"end\")");
            String[] parts = input.split(", ");
            String name = parts[0];
            String group = parts[1];
            String studentId = parts[2];
            Student stud = new Student(name, group, studentId);
            listOfStudents.add(stud);
            System.out.println(listOfStudents);
            if ("end".equals(input)) {
                System.out.println("Список студентов:");
                Iterator<Student> i = listOfStudents.iterator();
                while (i.hasNext())
                    System.out.println(i.next());
            }
        }
    }
}

import java.util.Objects;

public class Student {
    protected String name;
    protected String group;
    protected String studentId;

    public Student(String name, String group, String studentId) {
        this.name = name;
        this.group = group;
        this.studentId = studentId;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return Objects.equals(name, student.name) && Objects.equals(group, student.group) &&
                Objects.equals(studentId, student.studentId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, group, studentId);
    }
}


При вводе команды end выдает ошибку, не пойму почему:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at com.company.Main.main(Main.java:21)
  • Вопрос задан
  • 1351 просмотр
Решения вопроса 1
xez
@xez Куратор тега Java
TL Junior Roo
Подумайте что тут произойдет со строкой "end":
String[] parts = input.split(", ");
            String name = parts[0];
            String group = parts[1];
            String studentId = parts[2];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы