Java For循环通过对象的ArrayList运行,并检查它们的名称以在GUI中显示它们,但仍然显示错误消息
我决定编写一个搜索系统,通过GUI查找学校的学生和教师。这是一个OOP,需要在这里和那里进行一些调整,但有一个问题对我来说似乎不符合逻辑。当我搜索教师时,我必须在JTextField中键入他们的姓名或姓氏,然后按下Search按钮,该按钮运行一个方法,在教师对象的ArrayList中循环,并检查他们的姓名是否与Textfield中的姓名匹配。然后它检查这些教师是否有多个科目和分数,并通过嵌套的if语句。找到教师后,他们的信息将显示在带有多个文本字段的GUI上。理论上,如果我在文本字段中键入的名称与教师对象中的名称不匹配,则会弹出一条错误消息,说明我要查找的教师不在系统中。但是,即使我输入了正确的名称并显示了所有信息,每次它都会向我发送错误消息。我试图用break语句来修复它,但也没用。谁能帮我一下吗。 下面是我要说的代码:Java For循环通过对象的ArrayList运行,并检查它们的名称以在GUI中显示它们,但仍然显示错误消息,java,oop,for-loop,user-interface,nested-if,Java,Oop,For Loop,User Interface,Nested If,我决定编写一个搜索系统,通过GUI查找学校的学生和教师。这是一个OOP,需要在这里和那里进行一些调整,但有一个问题对我来说似乎不符合逻辑。当我搜索教师时,我必须在JTextField中键入他们的姓名或姓氏,然后按下Search按钮,该按钮运行一个方法,在教师对象的ArrayList中循环,并检查他们的姓名是否与Textfield中的姓名匹配。然后它检查这些教师是否有多个科目和分数,并通过嵌套的if语句。找到教师后,他们的信息将显示在带有多个文本字段的GUI上。理论上,如果我在文本字段中键入的名称
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);
}
}
}
public void lehrerSuche()
{
字符串lehrername=tfSuchfeldLehrer.getText();
for(int i=0;i
我已将我的项目上载到GitHub。方法和变量都是用德语写的,所以如果你不能理解我写的东西,我真的很抱歉。如果你有问题,请打电话给我。我使用Eclipse来编写代码。
此链接应指向我的GitHub:
如果链接不起作用,请在GitHub上查找Gonzo CR,并查看我上传所有文件的“我的家庭项目存储库”。
为了更好地理解,这些是面向对象类:
- 人物(摘要)
- 舒勒
- 莱勒
- 法赫
- 舒尔克拉斯
- 斯佩齐亚尔
- 斯普雷彻 GUI类:
- 这样的系统
- Testdaten(生成所有my对象的类)
td.getFachliste(0).getlehrriste(i).getName().equals(lehrername)
在循环第一次运行时,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);
}