Hey, ich habe ein kleines Problem, wollte ein kleines zu Test zwecken Programm schreiben mit Inventar wobei man Gegenstände adden kann, es ist natürlich noch nicht fertig weshalb auch andere Methoden noch nicht Funktionsfäig sind aber das Hauptproblem liegt bei der "addItem(Gegenstand)", hierbei soll ja dann das Item an die nächst freie Stelle eingesetzt werden in den Arraylisten, das Problem ist nur der Name und vermutlich die anderen Variablen haben keinen Wert, es wird eine NullPointException ausgeworfen, aber ich habe diesem Objekt doch die bestimmten Werte gegeben? Kann mir bitte jemand meinen Fehler aufzeigen? Ich brauche auch keinen vollständigen Code, nur die Info was ich ändern müsste.
Die Gegenstand Klasse ist in den Komentaren.
LG
public class Start {
public static void main(String args) { Inventar inv = new Inventar(); Gegenstand gs1 = new Gegenstand("Stein", 50, 10); inv.addItem(gs1); inv.printMaxGewicht(); inv.printGewicht(); inv.printUsedSlots(); inv.printGegenstandInfo("Stein"); } }
import java.util.ArrayList;
public class Inventar {
private int maxGewicht = 50,
maxSlots = 5;
private ArrayList<String> items = new ArrayList<String>();
private ArrayList<String> names;
private ArrayList<Integer> gewicht;
private ArrayList<Integer> usedSlots;
private Gegenstand[] gse;
public void addItem(Gegenstand gs) {
int i;
int tempG = 0;
int tempSlots = 0;
if(items.isEmpty()) {
names.add(gs.getName());
gewicht.add(gs.getGewicht());
usedSlots.add(0);
} else {
for(i = 0; i < items.size(); i++) {
tempG += gewicht.get(i);
tempSlots += usedSlots.get(i);
}
if((tempG + gs.getGewicht() <= maxGewicht) && (tempSlots + 1) <= maxSlots) {
names.add(gs.getName());
gewicht.add(gs.getGewicht());
usedSlots.add(i);
}
}
}
public void printGewicht() {
int cGewicht = 0;
for(int i = 0; i < gewicht.size(); i++) {
cGewicht += gewicht.get(i);
}
System.out.println("Das momentane Gewicht liegt bei " + cGewicht);
}
public void printMaxGewicht() {
System.out.println("Das Maximal Gewicht liegt bei " + maxGewicht);
}
public void printUsedSlots() {
int cUsedSlots = 0;
for(int i = 0; i < usedSlots.size(); i++) {
cUsedSlots += usedSlots.get(i);
}
System.out.println("Es werden momentan " + cUsedSlots + " von " + maxSlots + " genutzt.");
}
public void printGegenstandInfo(Gegenstand gs) {
for(int j = 0; j < usedSlots.size(); j++) {
System.out.println(this.gse[j].getName() + " " + this.gse[j].getGewicht() + " " + this.gse[j] );
}
}
public void printGegenstandInfo(String gegenstand) {
for(int i = 0; i < names.size(); i++) {
if(names.get(i).equalsIgnoreCase(gegenstand)) {
i = names.size();
for(int j = 0; j < usedSlots.size(); j++) {
System.out.println(gse[j].getName() + " " + gse[j].getGewicht() + " " + gse[j] );
}
}
}
}
}