Поскольку l oop пробегает ArrayList объектов и проверяет их имена, чтобы отобразить их в GUI, но сообщение об ошибке по-прежнему отображается - PullRequest
0 голосов
/ 14 марта 2020

Я решил запрограммировать поисковую систему для поиска учеников и учителей в школе через GUI. Это OOP и нуждается в некоторой настройке здесь и там, но есть одна проблема, которая не кажется мне логичной. Когда я ищу учителя, я должен набрать там имя или фамилию в JTextField и нажать кнопку «Поиск», которая запускает метод, который перебирает ArrayList объектов учителя и проверяет, совпадают ли их имена с именем в текстовом поле. , Затем он проверяет, есть ли у этих учителей несколько предметов и оценок, и проходит через вложенные операторы if. После того, как учитель найден, его информация отображается на GUI с несколькими полями Texfields. Теоретически, если имя, которое я ввел в TextField, не соответствует ни одному из объектов учителя, должно появиться сообщение об ошибке, в котором говорится, что учителя, которого я ищу, нет в системе. Но даже если я ввожу правильное имя и получаю всю отображаемую информацию, он каждый раз отправляет мне сообщение об ошибке. Я пытался исправить это с помощью оператора break, но это тоже не сработало. Может кто-нибудь, пожалуйста, помогите мне с этим. Вот код, о котором я говорю:

    public void lehrerSuche() 
{
    String lehrername = tfSuchfeldLehrer.getText();
    for(int i = 0; i < td.getFachliste(0).getListenLaengeLehrerListe();i++)
            {
                if(td.getFachliste(0).getLehrerliste(i).getName().equals(lehrername) || td.getFachliste(0).getLehrerliste(i).getNachname().equals(lehrername))
                {
                    if(td.getFachliste(0).getLehrerliste(i).isMehrerefaecher() && td.getFachliste(0).getLehrerliste(i).isMehrereklassen())
                    {
                        tfNameLehrer.setText(td.getFachliste(0).getLehrerliste(i).getName() + " " + td.getFachliste(0).getLehrerliste(i).getNachname());
                        tfKürzelLehrer.setText(td.getFachliste(0).getLehrerliste(i).getKuerzel() + ".");
                        tfKlasse_1Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getKlasse().getBezeichnung());
                        tfKlasse_2Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getKlass2().getBezeichnung());
                        tfFach_1Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getFach().getFachbezeichnung());
                        tfFach_2Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getFach2().getFachbezeichnung());

                    }
                    if(td.getFachliste(0).getLehrerliste(i).isMehrerefaecher() == false && td.getFachliste(0).getLehrerliste(i).isMehrereklassen())
                    {
                        tfNameLehrer.setText(td.getFachliste(0).getLehrerliste(i).getName() + " " + td.getFachliste(0).getLehrerliste(i).getNachname());
                        tfKürzelLehrer.setText(td.getFachliste(0).getLehrerliste(i).getKuerzel() + ".");
                        tfKlasse_1Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getKlasse().getBezeichnung());
                        tfKlasse_2Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getKlass2().getBezeichnung());
                        tfFach_1Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getFach().getFachbezeichnung());
                    }
                    if(td.getFachliste(0).getLehrerliste(i).isMehrerefaecher() && td.getFachliste(0).getLehrerliste(i).isMehrereklassen()==false)
                    {
                        tfNameLehrer.setText(td.getFachliste(0).getLehrerliste(i).getName() + " " + td.getFachliste(0).getLehrerliste(i).getNachname());
                        tfKürzelLehrer.setText(td.getFachliste(0).getLehrerliste(i).getKuerzel() + ".");
                        tfKlasse_1Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getKlasse().getBezeichnung());
                        tfFach_1Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getFach().getFachbezeichnung());
                        tfFach_2Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getFach2().getFachbezeichnung());
                    }
                    if(td.getFachliste(0).getLehrerliste(i).isMehrerefaecher() == false && td.getFachliste(0).getLehrerliste(i).isMehrereklassen()==false)
                    {
                        tfNameLehrer.setText(td.getFachliste(0).getLehrerliste(i).getName() + " " + td.getFachliste(0).getLehrerliste(i).getNachname());
                        tfKürzelLehrer.setText(td.getFachliste(0).getLehrerliste(i).getKuerzel() + ".");
                        tfKlasse_1Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getKlasse().getBezeichnung());
                        tfFach_1Lehrer.setText(td.getFachliste(0).getLehrerliste(i).getFach().getFachbezeichnung());
                    }
                    break;
                }
                else
                {
                    switchPanels_3(panelErrorLehrer);
                }
            }
}

Я загрузил свой проект на GitHub. Методы и переменные написаны на немецком языке, поэтому мне очень жаль, если вы не можете понять, что я написал. Если у вас есть вопросы, пожалуйста, ударь меня. Я использую Eclipse для написания кода. Эта ссылка должна направить вас на мой GitHub: https://github.com/Gonzo-CR/Home-Projects.git Если ссылка не работает, найдите Gonzo-CR на GitHub и проверьте мой репозиторий Home-projects, куда я загрузил все файлы. Для лучшего понимания это объектно-ориентированные классы:

  • Person (Abstract)
  • Schueler
  • Lehrer
  • Fach
  • Schulklasse
  • Spezial
  • Sprecher GUI классы:
  • Suchsystem
  • Testdaten (Класс, который генерирует все мои объекты)

1 Ответ

0 голосов
/ 14 марта 2020

Вероятно, проблема в том, что если td.getFachliste(0).getLehrerliste(i).getName().equals(lehrername) не соответствует действительности , то в первый раз, когда l oop запускает , switchPanels_3(panelErrorLehrer); будет запущено - независимо от того, выполнено ли условие на более поздней итерации из l oop.

Вам нужно проверить значение часового после окончания l oop - например:

bool lehrerGefunden = false;
for(int i = 0; i < td.getFachliste(0).getListenLaengeLehrerListe();i++){
    if(td.getFachliste(0).getLehrerliste(i).getName().equals(lehrername) || td.getFachliste(0).getLehrerliste(i).getNachname().equals(lehrername)){
        //etc.
        lehrerGefunden = true;
        break;
    }
}
if(!lehrerGefunden){
    switchPanels_3(panelErrorLehrer);
}

Таким образом, вы проверяете каждую запись в список, прежде чем решить, показывать ли ошибку.

...