开发者社区> 问答> 正文

For循环遍历对象的ArrayList并检查其名称以在GUI中显示它们,但仍显示错误消息

我决定对搜索系统进行编程,以通过GUI查找学校中的学生和老师。这是一个面向对象的操作,需要在此处和此处进行一些调整,但是有一个问题在我看来并不合逻辑。当我寻找老师时,我必须在JTextField中输入名称或姓氏,然后按“搜索”按钮,该按钮运行一种方法,该方法循环遍历教师对象的ArrayList,并检查其名称是否与Textfield中的名称匹配。 。然后,它检查这些教师是否具有多个科目和年级,并通过嵌套的if语句。找到老师后,他们的信息将显示在带有多个Texfield的GUI上。从理论上讲,如果我在TextField中键入的名称与教师对象中的名称不匹配,则会弹出一个错误消息,提示我正在寻找的教师是“ t在系统中。但是,即使我输入了正确的名称并获得了所有显示的信息,它仍会每次将我发送到错误消息。我试图用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 如果该链接不起作用,请在GitHub上查找Gonzo-CR并查看我的Home-projects存储库,其中我上传了所有文件。为了更好地理解,这些是面向对象的类:

  • 人(摘要)
  • 舒勒
  • 勒勒
  • 法奇
  • 舒尔克拉斯
  • Spezial
  • Sprecher GUI类:
  • 这样的系统
  • Testdaten(一个生成我所有对象的类)

问题来源:Stack Overflow

展开
收起
montos 2020-03-25 21:26:35 389 0
1 条回答
写回答
取消 提交回答
  • 问题可能是,如果第一次循环运行时td.getFachliste(0).getLehrerliste(i).getName().equals(lehrername)不为true ,则将被触发-不管循环的后续迭代是否满足条件。switchPanels_3(panelErrorLehrer);

    您需要在循环结束后检查哨兵值-例如:

    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);
    }
    

    这样,您可以在确定是否显示错误之前检查列表中的每个条目。

    回答来源:Stack Overflow

    2020-03-25 21:26:58
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载