Это продолжение проекта из моего последнего вопроса. Это в основном программа, которая возвращает консольные сообщения, получая пользовательский ввод со сканером. Это школьная программа, в которой есть класс, создающий оценки с помощью ArrayLists, в котором ученики хранятся в соответствующих классах. Некоторые учащиеся также могут быть выступающими в классе или учащимися, которые также хранятся в собственных списках ArrayList. Программа просит пользователя ввести категорию, которая ведет к основному пути через вложенные операторы if. Если операторы if не выполняются, сообщение об ошибке появляется на консоли и возвращается к началу.
Способ, которым я настраиваю программу, должен работать с вложенными операторами if, но это все еще вызывает проблемы, и я не знаю, что делать.
Я из Германии, поэтому прошу прощения за некоторые немецкие слова в программе.
Это код:
package package_Fachklassen;
import java.util.Scanner;
public class Startklasse {
public static void main(String[] args) {
// TODO Auto-generated method stub
Schulklasse sk1, sk2;
sk1 = new Schulklasse("WG 13-1");
sk2 = new Schulklasse("WG 13-2");
Sprecher ks1, sss1;
ks1 = new Sprecher("Klassensprecher");
sss1 = new Sprecher("Schülersprecher");
Spezial kS1, kS2, kS3, kS4, sS1, sS2;
kS1 = new Spezial("Cem", "Yildiz", 19, sk2, ks1);
kS2 = new Spezial("Fatima", "Baba", 19, sk2, ks1);
kS3 = new Spezial("Rüveyda", "Yildiz", 20, sk1, ks1);
kS4 = new Spezial("Zvoni", "Jogovic", 19, sk1, ks1);
sS1 = new Spezial("Cem", "Yildiz", 19, sk2, sss1);
sS2 = new Spezial("Fatima", "Baba", 19, sk2, sss1);
ks1.addKlassensprecher(kS1);
ks1.addKlassensprecher(kS2);
ks1.addKlassensprecher(kS3);
ks1.addKlassensprecher(kS4);
sss1.addSchuelersprecher(sS1);
sss1.addSchuelersprecher(sS2);
//Klasse 13-1
Schueler s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20;
s1 = new Schueler("Gonzalo", "Cofre Real", 18, sk1);
s2 = new Schueler("Swaastika", "Yogeswaran", 19, sk1);
s3 = new Schueler("Derin", "Sipahi", 19, sk1);
s4 = new Schueler("Henry", "Reinhold", 19, sk1);
s5 = new Schueler("Sara", "Perkovic", 19, sk1);
s6 = new Schueler("Honia", "Aref", 19, sk1);
s7 = new Schueler("Finn", "Bolheimer", 17, sk1);
s8 = new Schueler("Karoline", "Garkos", 18, sk1);
s9 = new Schueler("Hannah", "Hirth", 18, sk1);
s10 = new Schueler("Sarah", "Schwarz", 18, sk1);
s11 = new Schueler("Rüveyda", "Yildiz", 20, sk1);
s12 = new Schueler("Jibi", "Saji", 18, sk1);
s13 = new Schueler("Rida", "Jafari", 18, sk1);
s14 = new Schueler("Patrick", "Bruhn", 18, sk1);
s15 = new Schueler("Andre", "Rosenau", 19, sk1);
s16 = new Schueler("Irini", "Chrisivolanto", 19, sk1);
s17 = new Schueler("Xenia", "Aschenbrenner", 19, sk1);
s18 = new Schueler("Kristina", "Jokic", 19, sk1);
s19 = new Schueler("Yavuz", "Salik", 21, sk1);
s20 = new Schueler("Zvonimir", "Jogovic", 19, sk1);
sk1.addSchueler(s1);
sk1.addSchueler(s2);
sk1.addSchueler(s3);
sk1.addSchueler(s4);
sk1.addSchueler(s5);
sk1.addSchueler(s6);
sk1.addSchueler(s7);
sk1.addSchueler(s8);
sk1.addSchueler(s9);
sk1.addSchueler(s10);
//Klasse 13-2
Schueler ss1, ss2, ss3, ss4, ss5, ss6, ss7, ss8;
ss1 = new Schueler("Cem", "Yildiz", 19, sk2);
ss2 = new Schueler("Fathima", "Baba", 19, sk2);
ss3 = new Schueler("Sanjie", "Bislimi", 19, sk2);
ss4 = new Schueler("Jasmine", "Jaffari", 19, sk2);
ss5 = new Schueler("Hannah", "Arent", 19, sk2);
ss6 = new Schueler("Niklas", "Genf", 18, sk2);
ss7 = new Schueler("Celina", "Musollaj", 18, sk2);
ss8 = new Schueler("Naomi", "Schmidt", 19, sk2);
sk2.addSchueler(ss1);
sk2.addSchueler(ss2);
sk2.addSchueler(ss3);
sk2.addSchueler(ss4);
sk2.addSchueler(ss5);
sk2.addSchueler(ss6);
String schueler = "Schüler";
String sprecher = "Sprecher";
String ksSuche = "KS-Suche";
String ssSuche = "SS-Suche";
String ksAlle = "KS-Alle";
String ssAlle = "SS-Alle";
while(true)
{
Scanner firstscan = new Scanner(System.in);
System.out.println("Nach welcher Kategorie suchen Sie?");
String f_input = firstscan.nextLine();
boolean studentmissing = true;
if(f_input.equals(schueler))
{
Scanner scan = new Scanner(System.in);
System.out.println("Welche Klasse besucht der gesuchte Schüler?");
String k_input= scan.nextLine();
if(k_input.equals(sk1.getBezeichnung()))
{
System.out.println("Welchen SChüler aus Klasse 13-1 suchen Sie?");
String n_input = scan.nextLine();
for(int i = 0; i < sk1.getListenLaenge(); i++)
{
if(n_input.equals(sk1.getSchueler(i).getName()) || n_input.equals(sk1.getSchueler(i).getNachname()))
{
studentmissing = false;
System.out.println("Ihr Schüler:");
System.out.println(" " + sk1.getSchueler(i).getName());
System.out.println(" " + sk1.getSchueler(i).getNachname());
System.out.println(" " + sk1.getSchueler(i).getAlter());
break;
}
}
if(studentmissing)
{
System.out.println("Schüler existiert nicht oder ist nicht in dieser Klasse!");
System.out.println("--------------------------------------------------------");
}
}
else if(k_input.equals(sk2.getBezeichnung()))
{
System.out.println("Welchen Schüler aus Klasse 13-2 suchen Sie?");
String n2_input = scan.nextLine();
for(int i = 0; i < sk1.getListenLaenge(); i++)
{
if(n2_input.equals(sk2.getSchueler(i).getName()) || n2_input.equals(sk2.getSchueler(i).getNachname()))
{
studentmissing = false;
System.out.println("Ihr Schüler:");
System.out.println(" " + sk2.getSchueler(i).getName());
System.out.println(" " + sk2.getSchueler(i).getNachname());
System.out.println(" " + sk2.getSchueler(i).getAlter());
break;
}
}
if(studentmissing)
{
System.out.println("Schüler existiert nicht oder ist nicht in dieser Klasse!");
System.out.println("--------------------------------------------------------");
}
}
}
else if(f_input.equals(sprecher))
{
Scanner ksScanner = new Scanner(System.in);
System.out.println("Suchen Sie nach Klassensprechern oder Schülersprechern?");
String ks_input = ksScanner.nextLine();
if(ks_input.equals(ksSuche))
{
System.out.println("Geben sie den Namen der gesuchten Person ein!");
String sn_input = firstscan.nextLine();
boolean ksMissing = true;
for(int i = 0; i < ks1.getListLengthKS(); i++)
{
if(sn_input.equals(ks1.getKlassensprecher(i).getName()) || sn_input.equals(ks1.getKlassensprecher(i).getNachname()))
{
ksMissing = false;
System.out.println("Ihr Schüler:");
System.out.println(" " + ks1.getKlassensprecher(i).getName());
System.out.println(" " + ks1.getKlassensprecher(i).getNachname());
System.out.println(" " + ks1.getKlassensprecher(i).getAlter());
break;
}
}
if(ksMissing)
{
System.out.println("Schüler ist nicht gespeichert!");
System.out.println("-------------------------------------------------");
}
}
}
else if(f_input.equals(ssSuche))
{
System.out.println("Geben sie den Namen des Schülersprechers ein!");
String ss_Input = firstscan.nextLine();
boolean ssMissing = true;
for(int i = 0; i < sss1.getListLengthSS(); i++)
{
if(ss_Input.equals(sss1.getSchuelersprecher(i).getName()) || ss_Input.equals(sss1.getSchuelersprecher(i).getNachname()))
{
ssMissing = false;
System.out.println("Ihr Schüler:");
System.out.println(" " + sss1.getSchuelersprecher(i).getName());
System.out.println(" " + sss1.getSchuelersprecher(i).getNachname());
System.out.println(" " + sss1.getSchuelersprecher(i).getAlter());
break;
}
}
if(ssMissing)
{
System.out.println("Schüler ist nicht gespeichert!");
System.out.println("-------------------------------------------------");
}
}
else if(f_input.equals(ksAlle))
{
ks1.showKlassensprecher();
}
else if(f_input.equals(ssAlle))
{
sss1.showSchuelersprecher();
}
}
}
}
Большая часть функции выполняется. Проблемы появляются в случае значения, которое не удовлетворяет условию. И каждая функция из «else if (f_input.equals (ssSuche))» просто возвращается к началу.
Вот некоторые примеры из консоли в случае поиска ученика:
Nach welcher Kategorie suchen Sie?
Schüler
Welche Klasse besucht der gesuchte Schüler?
WG 13-1
Welchen SChüler aus Klasse 13-1 suchen Sie?
Derin
Ihr Schüler:
Derin
Sipahi
19
Nach welcher Kategorie suchen Sie?
Schüler
Welche Klasse besucht der gesuchte Schüler?
WG 13-1
Welchen SChüler aus Klasse 13-1 suchen Sie?
Cem
Schüler existiert nicht oder ist nicht in dieser Klasse!
--------------------------------------------------------
Nach welcher Kategorie suchen Sie?
Schüler
Welche Klasse besucht der gesuchte Schüler?
WG 13-2
Welchen Schüler aus Klasse 13-2 suchen Sie?
Cem
Ihr Schüler:
Cem
Yildiz
19
Nach welcher Kategorie suchen Sie?
Schüler
Welche Klasse besucht der gesuchte Schüler?
WG 13-2
Welchen Schüler aus Klasse 13-2 suchen Sie?
Derin
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at package_Fachklassen.Schulklasse.getSchueler(Schulklasse.java:27)
at package_Fachklassen.Startklasse.main(Startklasse.java:144)
Это пример другого вывода консоли:
Nach welcher Kategorie suchen Sie?
Sprecher
Suchen Sie nach Klassensprechern oder Schülersprechern?
KS-Suche
Geben sie den Namen der gesuchten Person ein!
Cem
Ihr Schüler:
Cem
Yildiz
19
Nach welcher Kategorie suchen Sie?
Sprecher
Suchen Sie nach Klassensprechern oder Schülersprechern?
KS-Suche
Geben sie den Namen der gesuchten Person ein!
Derin
Schüler ist nicht gespeichert!
-------------------------------------------------
Nach welcher Kategorie suchen Sie?
Sprecher
Suchen Sie nach Klassensprechern oder Schülersprechern?
SS-Suche
Nach welcher Kategorie suchen Sie?
Sprecher
Suchen Sie nach Klassensprechern oder Schülersprechern?
KS-Alle
Nach welcher Kategorie suchen Sie?
Sprecher
Suchen Sie nach Klassensprechern oder Schülersprechern?
SS-Alle
Nach welcher Kategorie suchen Sie?