我試圖創建一個Arraylist。我嘗試添加我的對象,但是如果我運行Programm,我會得到這些錯誤NullpointerException。Arraylist Nullpointerexception。添加功能的例外
Exception in thread "main" java.lang.NullPointerException
at controller.Menue.legePrivatkundeAn(Menue.java:122)
at controller.Menue.liesPrivatkunde(Menue.java:94)
at controller.Menue.auswahlMenue(Menue.java:38)
at start.Starter.main(Starter.java:23)
所以我不是一個非常好的程序員,我試圖找出並在Stackoverflow搜索。我發現很多帖子都是創作者忘了初始化Arraylist,而許多創作者在1個類文件中使用Arraylist。 我可能使用MVC-模式和我的Arraylist是在模型類。我的班級銀行可以創建一個客戶(Kunde),Kunde繼承私人客戶(Privatkunde)。屬性在控制器類Menue中處理。
package model;
import java.util.ArrayList;
類private String name;
private String bic;
private Adresse adresse;
private ArrayList<Kunde> kundeList;
public Bank(Kunde kundeListe) {
super();
this.kundeList = new ArrayList<Kunde>();
}
public ArrayList<Kunde> getKundeList() {
for (Kunde kunde : kundeList) {
System.out.println(kunde.toString());
}// end of for-Schleife
return kundeList;
}// end of getKundeList()
public Bank addKunde(Kunde kunde) {
return this;
}
public Bank setKundeList(ArrayList<Kunde> kundeList) {
this.kundeList = kundeList;
return this;
}
@Override
public String toString() {
return "Bank [Name= " + name + ", BIC= " + bic + ", Adresse= " + adresse + ", Kunden= " + kundeList + " ]";
}// end of toString()
的
公共類銀行{//從現在開始我展示U中的控制器級Menue。
package controller;
import java.util.ArrayList;
import controller.KontoDarstellungsFunktion;
import model.*;
import io.*;
public class Menue {
private String auswahl;
private Bank bank;
private Kunde kunde;
private KontoDarstellungsFunktion kdf;
public void auswahlMenue() {
do {
menuePunkte();
auswahl = MeineEingabe.erfasseAuswahl("Auswahl: ");
switch (auswahl) {
case "01":
liesPrivatkunde();
System.out.println("Privatkunde wurde angelegt!");
break;
case "02":
liesFirmenkunde();
System.out.println("Firmenkunde wurde angelegt!");
break;
case "03":
liesKontoUndKdnr();
System.out.println("Konto und Kundennummer wurde angelegt!");
break;
case "04":
kdf.kundeMitKontoAnzeigenDurchKdnr();
System.out.println("Kunde mit Konto durch Kundennummer wurde angezeigt!");
break;
case "05":
kdf.kundeMitKontoAnzeigenDurchName();
System.out.println("Kunde mit Konto durch Name wurde angezeigt!");
break;
case "06":
kdf.kontoAnzeigenDurchIBAN();
System.out.println("Kunde durch IBAN wurde angezeigt!");
break;
case "07":
kdf.kundenUnsortiertAnzeigen();
System.out.println("Kunde wurde unsortiert angezeigt!");
break;
case "08":
kdf.kundenSortiertAnzeigenNachAufsteigenderKdnr();
System.out.println("Kunde wurde sortiert nach aufsteigender Kundennummer angezeigt!");
break;
case "09":
kdf.alleKontenUnsortiertAnzeigen();
System.out.println("Alle Konten wurden unsortiert angezeigt!");
break;
case "10":
System.out.println("Das Programm wurde Beendet!!");
break;
}
} while (!auswahl.equals("10"));
}
public void liesPrivatkunde() {
String vname = MeineEingabe.erfasseVorname("Vorname: ");
String nname = MeineEingabe.erfasseNachname("Nachname: ");
String telnummer = MeineEingabe.erfasseString("Telefonnummer: ");
String eMail = MeineEingabe.erfasseEmail("E-Mail: ");
String gebdat = MeineEingabe.erfasseDatum("Geburtsdatum: ");
int kndnr = MeineEingabe.erfasseInt("Kundennummer: ");
Adresse adr = liesAdresse();
legePrivatkundeAn(vname, nname, telnummer, eMail, gebdat, kndnr, adr);
}
public Privatkunde legePrivatkundeAn(String vname, String nname, String telnummer, String eMail, String gebdat,
int kndnr, Adresse adr) {
Privatkunde privKunde = new Privatkunde(vname, nname, telnummer, eMail, gebdat, adr, kndnr, bank);
privKunde.setVorname(vname);
privKunde.setNachname(nname);
privKunde.setTelefonNummer(telnummer);
privKunde.setMail(eMail);
privKunde.setGeburtsDatum(gebdat);
privKunde.setKundenNummer(kndnr);
privKunde.setAdresse(adr);
bank.addKunde(privKunde);
//System.out.println(privKunde.toString());
return privKunde;
}
public Adresse liesAdresse() {
String adresszeile1 = MeineEingabe.erfasseString("Adresszeile 1: ");
String adresszeile2 = MeineEingabe.erfasseString("Adresszeile 2: ");
String plz = MeineEingabe.erfassePostleitzahl("PLZ: ");
String ort = MeineEingabe.erfasseString("Ort: ");
return legeAdresseAn(adresszeile1, adresszeile2, plz, ort);
}
public Adresse legeAdresseAn(String adresszeile1, String adresszeile2, String plz, String ort) {
Adresse adr = new Adresse(adresszeile1, adresszeile2, plz, ort);
adr.setAdresszeile1(adresszeile1);
adr.setAdresszeile2(adresszeile2);
adr.setPostleitZahl(plz);
adr.setOrt(ort);
return adr;
}
public class Privatkunde extends Kunde {// start of class
private String vorname;
private String nachname;
private String telefonNummer;
private String email;
private String geburtsDatum;
private Adresse adresse;
private int kundenNummer;
private Bank bank;
public Privatkunde(String vorname, String nachname, String telefonNummer, String eMail, String geburtsDatum,
Adresse adresse, int kundenNummer, Bank bank) {
super(kundenNummer, adresse);
this.vorname = vorname;
this.nachname = nachname;
this.telefonNummer = telefonNummer;
this.email = eMail;
this.geburtsDatum = geburtsDatum;
this.adresse = adresse;
this.kundenNummer = kundenNummer;
this.bank = bank;
}
public String getVorname() {
return vorname;
}
public void setVorname(String vorname) {
this.vorname = vorname;
}
public String getNachname() {
return nachname;
}
public void setNachname(String nachname) {
this.nachname = nachname;
}
public String getTelefonNummer() {
return telefonNummer;
}
public void setTelefonNummer(String telefonNummer) {
this.telefonNummer = telefonNummer;
}
public String getMail() {
return email;
}
public void setMail(String eMail) {
this.email = eMail;
}
public String getGeburtsDatum() {
return geburtsDatum;
}
public void setGeburtsDatum(String geburtsDatum) {
this.geburtsDatum = geburtsDatum;
}
public Adresse getAdresse() {
return adresse;
}
public void setAdresse(Adresse adresse) {
this.adresse = adresse;
}
public String toString() {
return "Privatkunde [Vorname= " + vorname + "| Nachname= " + nachname + "| Telefonnummer= " + telefonNummer
+ "| E-Mail= " + email + "| Geburtsdatum= " + geburtsDatum + "| Kundennummer= " + kundenNummer
+ "| Adresse= " + adresse + "]";
}
所以我希望我解釋它真的很好,因爲我來自德國。
問候 綠茶
哪條線是122? – MordechayS
你在'Privatkunde'課程中如何設置'bank'? – Rohan
我的銀行類只是創建一個kunde而kunde繼承了Privatkunde, – GreenTea