Null Pointer Exception

denis7788

Bekanntes Mitglied
Hi! Ich bin gerade dabei eine "bibliothek " zu programmieren. Beim testen bekomme ich aber eine nullpointer exception in der klasse regal in zeile 54. was läuft denn hier falsch?
- und das regal soll zunächst keine bücher enthalten... wurde das von mir korrekt umgesetzt oder habe ich da einen denkfehler drin? .. hier die klassen:

Java:
class Buch {
	String isbn;
	String titel, autor, zustand, ort;
	Buch(String isbn, String titel, String autor, String zustand, String ort) {
		this.isbn = isbn;
		this.titel = titel;
		this.autor = autor;
		this.zustand = zustand;
		this.ort = ort;
	}

	public void ausleihen(String str) {
		ort = str;
	}

	public void zurueckbekommen() {
		ort = "Regal";
		if(zustand == "Gebraucht") {
			zustand = "Altpapier";
		}
		else 
		    if( zustand == "Neuwertig") {
			    zustand = "Gebraucht";
		     }
	}

	public String getISBN() {
		return isbn;
	}

	public boolean setISBN(String eingISBN) {
		boolean b = false;
		int sum = 0;
		for(int i = 0, x = 10, n = eingISBN.length(); i < n; i++) {
			char c = eingISBN.charAt(i);
			switch(c) {
			case' ': break;
			case'-': break;
			case'0':sum = sum + x * Integer.parseInt(String.valueOf(c));
				x--;
				break;
			case'1':sum = sum + x * Integer.parseInt(String.valueOf(c));
				x--;
				break;
			case'2':sum = sum + x * Integer.parseInt(String.valueOf(c));
				x--;
				break;
                        case'3':sum = sum + x * Integer.parseInt(String.valueOf(c));
				x--;
				break;
			case'4':sum = sum + x * Integer.parseInt(String.valueOf(c));
				x--;
				break;
			case'5':sum = sum + x * Integer.parseInt(String.valueOf(c));
				x--;
				break;
			case'6':sum = sum + x * Integer.parseInt(String.valueOf(c));
				x--;
				break;
			case'7':sum = sum + x * Integer.parseInt(String.valueOf(c));
				x--;
				break;
			case'8':sum = sum + x * Integer.parseInt(String.valueOf(c));
				x--;
				break;
			case'9':sum = sum + x * Integer.parseInt(String.valueOf(c));
				x--;
				break;
				
			}
		

		}
		if(eingISBN.length() == 13 && sum % 11 == 0) {
			this.isbn = eingISBN;
			b = true;
		}
		else {
		this.isbn = isbn;
		b = false;}
		
		return b;
	}



	public String toString() {
		String str = "";
		str +=  "\n\n ISBN: " + isbn +
			"\n Titel: " + titel +
			"\n Autor: " + autor +
			"\n Zustand: " + zustand +
			"\n Ort: " + ort;
		return str;
	}
}

Java:
public class Regal {
	Buch[] buecher;
	String standort;
	int freiePlaetze, anzahlBuecher, maxKapazitaet; 
	
	public Regal(int maxKapazitaet, Buch[] buecher, String standort){
		this.maxKapazitaet = maxKapazitaet;
		this.buecher = new Buch[this.maxKapazitaet];
		this.standort = standort;
	}
	
	public boolean addBuch(Buch neuesBuch) {
		int i = 0;
		boolean bool = false;
		if(i < this.buecher.length){
			buecher[i] = neuesBuch;
			i++;
			bool = true;
		}
		else 
			if (i >= buecher.length){
				bool = false;
			}	
		return bool;
	}
	
	public void removeBuch(String str) {
		
	}
	
	public String getStandort() {
		return standort;
	}
	
	public int getMaxKapazitaet() {
		return maxKapazitaet;
	}
	
	public int getFreiePlaezte() {
		return freiePlaetze;
	}
	
	public int getAnzahlBuecher() {
		return anzahlBuecher;
	}
	
	
	public String toString(){
		String str = "";
		str += "maximale capacity: " + maxKapazitaet + "\n standort: " + standort + 
				"\n Buecher enthalten: ";
		for(int i = 0; i < buecher.length; i++) {
			str += "\n\n" + buecher[i].toString();
		}
		return str;
	}

}

Java:
public class TestklasseRegal {
	
	public static void main(String[] args) {
		Buch bams = new Buch("123", "titeleins", " hans", "Gebraucht", "sls");
		Buch nana = new Buch("324-234", "titel2", "schriftsteller", "neuwertig", "sb");
		Buch nunu = new Buch("42w3132","titel3", "schiller", "altpapiert", "koeln");
		Buch monk = new Buch("7788","titelbam","goethe","neuwertig","berlin");
		Buch[] buecher = new Buch[3];
		Regal neu = new Regal(3, buecher, "HIER halt");
		
		System.out.println(neu);
		neu.addBuch(monk);
		System.out.println("\n" + neu);
		neu.addBuch(bams);
		System.out.println("\n" + neu);
		neu.addBuch(nunu);
		System.out.println("\n" + neu);
		
		
	}
}
 

Final_Striker

Top Contributor
Du erstellt in der deiner Testklasse ein Array buecher, schreibst aber keine Buch Objekte rein. Da das Array das du dann übergibst leer ist, bekommst du auch eine NPE. ;-)
 

Ziegenpeter

Aktives Mitglied
Das Problem ist recht offensichtlich. Du erstellst ein Regal und legst dort ein neues Array an mit der übergebenen Kapazität. Das Problem ist nur, dass dieses Array nur null-Werte enthält, da du keine Bücher "in dein Regal stellst". Dadurch wird versucht null.toString() aufzurufen, was natürlich nicht geht.

Edit: Verdammt, jetzt wollt ich gleich mit meinem ersten Beitrag mal ein Problem lösen und dann kommt mir jemand zuvor ;)

Edit2: @Striker: Das stimmt nicht ganz. Das Buch-Array welches er übergibt wird gar nicht verwendet, da er stattdessen ein neues Array erstellt!
 
Zuletzt bearbeitet:

denis7788

Bekanntes Mitglied
ok danke dafür!! aber welche möglichkeiten gibt es denn das ein regal zunächst keine bücher enthält, jedoch eine bestimmte länge hat, sodass ich je nach länge nach und nach bücher einfügen kann bzw sie auch an verschiedenen positionen ( je nach isbn nummer) entnehmen kann...
sagen wir ich entnehme ein buch in der mitte und möchte dann den restlichen inhalt ausgeben, dann wird bei der toString methode doch ein leeres feld durchlaufen( was der fehler ist falls ich das richtig verstandne habe)... wie könnte man das lösen?
 

Ziegenpeter

Aktives Mitglied
Du nimmst einfach eine Datenstruktur variabler Länge wie z.b. eine Liste (LinkedList oder ArrayList). Die Add-Methode änderst du dann wie folgt:

Java:
public boolean addBuch(Buch neuesBuch) {
        int i = 0;
        boolean bool = false;                    \\Brauchst du nicht!
        if(anzahlBuecher < maxKapazitaet){
             buecher.add(neuesBuch);
            anzahlBuecher++;
            return true
        }
        else {
            return false;
        }
    }

Ansonsten kannst du auch statt anzahlBuecher zu verwenden auch einfach buecher.size() verwenden.
 

Final_Striker

Top Contributor
Nimm stat eines Arrays lieber eine ArrayList. Damit kannst du einfacher Bücher einfügen und wieder entfernen. In der Methode addBuch brauchst du dann noch eine Überprüfung ob die Größe der ArrayList kleiner als die maximale Kapazität des Regals ist. Ist die Größe gleich der Kapazität, könntest du z.B eine "RegalIstVoll" Exception werfen.

EDIT:

zu spät :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Null-Pointer Exception beim Programmstart Java Basics - Anfänger-Themen 8
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
C Null Pointer Exception Java Basics - Anfänger-Themen 10
G Null Pointer Exception Java Basics - Anfänger-Themen 4
D OOP Warum bekomme ich eine Null-Pointer Exception!!? :( Java Basics - Anfänger-Themen 4
A Null Pointer Exception in Liste Java Basics - Anfänger-Themen 11
L Null Pointer Exception bei setText Java Basics - Anfänger-Themen 9
T Null Pointer Exception Java Basics - Anfänger-Themen 4
T Null Pointer Exception Java Basics - Anfänger-Themen 8
H Null Pointer Exception Problem Java Basics - Anfänger-Themen 3
L Null Pointer Exception bei Focus Event bei einem JTextField Java Basics - Anfänger-Themen 2
D Null-Pointer-Exception Java Basics - Anfänger-Themen 5
E Hash Map - Null Pointer Exception? Java Basics - Anfänger-Themen 3
B Call By reference (Null pointer exception) Java Basics - Anfänger-Themen 6
J Null Pointer Exception in der "ob Null"-Abfrage? Java Basics - Anfänger-Themen 37
B Null Pointer Exception Java Basics - Anfänger-Themen 7
A Null Pointer Exception beim Erstellen eines Arrays aus einer eigenen Klasse Java Basics - Anfänger-Themen 3
K Null pointer exception in Methode Java Basics - Anfänger-Themen 4
D null pointer exception Java Basics - Anfänger-Themen 3
M Null Pointer Exception Java Basics - Anfänger-Themen 18
T Null Pointer Exception Java Basics - Anfänger-Themen 2
F Null Pointer Exception #2 Java Basics - Anfänger-Themen 5
I Unerklärliche Null-Pointer-Exception bei JRadioButton Array Java Basics - Anfänger-Themen 2
H Null Pointer Exception? Java Basics - Anfänger-Themen 4
G Null Pointer Exception Java Basics - Anfänger-Themen 10
N null pointer exception Java Basics - Anfänger-Themen 6
S Null-Pointer-Exception Java Basics - Anfänger-Themen 5
B Null Pointer Exception Java Basics - Anfänger-Themen 2
L nur kleines null Pointer Exception problem Java Basics - Anfänger-Themen 9
R Null Pointer Exception von anderer Klasse aus. Java Basics - Anfänger-Themen 2
N NULL Pointer Exception Java Basics - Anfänger-Themen 4
J Java.lang Null Pointer Exception Java Basics - Anfänger-Themen 3
Dilandau null pointer exception - woran liegts? Java Basics - Anfänger-Themen 16
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
Orkanson Null Pointer Expception Java Basics - Anfänger-Themen 3
G Null Pointer Exeption Java Basics - Anfänger-Themen 8
Z Null Pointer?! WHY? Java Basics - Anfänger-Themen 11
J Null-Pointer -> Code-Zeile ausgeben möglich? Java Basics - Anfänger-Themen 7
N null pointer exeption problem Java Basics - Anfänger-Themen 4
H Null pointer Exeption Java Basics - Anfänger-Themen 4
R Thread geht jetzt - aber - Fehler "Null-Pointer" Java Basics - Anfänger-Themen 20
S Vector wirdn icht gefüllt, null Pointer, was ist der Fehler Java Basics - Anfänger-Themen 6
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
I Grundsatzfrage: Belegt eine Referenz auf 'null' RAM, und wenn ja - wieviel ;-) ? Java Basics - Anfänger-Themen 5
H Ein übergegebenes Objekt auf null setzen Java Basics - Anfänger-Themen 9
P Buffer und null Java Basics - Anfänger-Themen 3
"java.util.HashMap.get(Object)" is null Java Basics - Anfänger-Themen 10
jakobfritzz Array- cannot invoke "" because "" is null Java Basics - Anfänger-Themen 4
W Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt? Java Basics - Anfänger-Themen 10
N null in String replacen Java Basics - Anfänger-Themen 16
S JavaKara Null Exception Error Java Basics - Anfänger-Themen 4
K Bufread.readLine())!= null wie beenden? Java Basics - Anfänger-Themen 4
C Variablen Provided text for message may not be null Java Basics - Anfänger-Themen 9
T ComboBox getValue() zeigt null Java Basics - Anfänger-Themen 7
J null exception Array Java Basics - Anfänger-Themen 5
tobikoch String x= null Bedeutung Java Basics - Anfänger-Themen 9
C NumberFormatException: null ohne Ausnahmebehandlung stoppen Java Basics - Anfänger-Themen 7
J Int wird als Null ausgegeben Java Basics - Anfänger-Themen 8
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
C Array-Eintrag wieder auf Null setzen Java Basics - Anfänger-Themen 3
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
V NullPointerException, wenn Key und Value null sind Java Basics - Anfänger-Themen 2
M jTable bekommt null Java Basics - Anfänger-Themen 1
B MySQL (jdbc) -> connection liefert NULL Java Basics - Anfänger-Themen 3
der_Schokomuffin Hilfe gesucht: String wird auf null gesetzt! Java Basics - Anfänger-Themen 17
L Warum ist Variable null? Java Basics - Anfänger-Themen 3
J javax.servlet.ServletException: Name is null Java Basics - Anfänger-Themen 7
B if(object== null) abkürzen? Java Basics - Anfänger-Themen 6
O JavaArray Null Java Basics - Anfänger-Themen 3
U Null Exception aber keine Ahnung warum Java Basics - Anfänger-Themen 5
W NullPointerException obwohl nicht null? Java Basics - Anfänger-Themen 3
D Best Practice Konvention - Klassenmembers auf null setzen? Java Basics - Anfänger-Themen 2
I Null-Überprüfung durch Lambda-Expressions abkürzen Java Basics - Anfänger-Themen 8
M set Integer bzw. set null mit SQL DB Java Basics - Anfänger-Themen 9
I Polymorphie Null Objekt Java Basics - Anfänger-Themen 3
O Datentypen Integer mit führender Null Java Basics - Anfänger-Themen 13
DaCrazyJavaExpert Compiler-Fehler Variable nicht mit null initialisiert, trotzdem: NullPointerException Java Basics - Anfänger-Themen 28
J Einfache Frage zu "null" Java Basics - Anfänger-Themen 2
T Datei in Array einlesen "null" Java Basics - Anfänger-Themen 8
P Operatoren Parameter nicht auf null geprüft? Java Basics - Anfänger-Themen 16
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
V Elemente aus einem Array mit null überschreiben Java Basics - Anfänger-Themen 4
V String Array gegen null-Eintrag sichern Java Basics - Anfänger-Themen 11
R Gleitkommazahlen ohne führende Null Java Basics - Anfänger-Themen 10
M array = null Java Basics - Anfänger-Themen 2
F String equals NULL Problem Java Basics - Anfänger-Themen 4
F JSON null macht mir ein Problem Java Basics - Anfänger-Themen 3
R Property Value als null setzen Java Basics - Anfänger-Themen 1
D Arrays.toString spuckt null aus? Java Basics - Anfänger-Themen 3
T Compiler-Fehler Null type safety (type annotations) Java Basics - Anfänger-Themen 5
F Erste Schritte Unterschied: Array "leer" / "null" Java Basics - Anfänger-Themen 3
J Fehlerhafte Ausgabe "null" Java Basics - Anfänger-Themen 2
G Threads zum Thema Threads??? null Ahnung Java Basics - Anfänger-Themen 4
W Input/Output DataOutputStream gibt NULL zurück Java Basics - Anfänger-Themen 5
J Einfach verkettet List: Ausgabe ohne null Java Basics - Anfänger-Themen 11
D Null Ausgabe obwohl wert zugewiesen Java Basics - Anfänger-Themen 5
J Alias null Java Basics - Anfänger-Themen 4
B Aliasing bei null-Objekten Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben