Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context"

sumbxnnet

Mitglied
Hallo alle miteinander,
bin mittlerweile echt ratlos was da falsch sein soll, weil beide Methoden eigentlich nicht static sein sollten. Folgendes: Ich hab einmal eine Klasse Lager und die Klasse LagerDialog, welche auf Lager zugreift. Dabei will ich im Dialog die Methode legeAnArtikel(); aufrufen, aber das geht nicht.
[CODE lang="java" title="Klasse Lager"]public void legeAnArtikel(Artikel artikel){

artikelArray[anzahlArtikel] = artikel;
anzahlArtikel++;
}[/CODE]
[CODE lang="java" title="Klasse LagerDialog" highlight="19"]private void legeAnArtikel(){
System.out.println("Artikelnummer: ");
int artikelNr = input.nextInt();
input.nextLine();

System.out.println("Art des Artikels: ");
String art = input.nextLine();

System.out.println("Bestand: ");
int bestand = input.nextInt();
input.nextLine();

System.out.println("Preis: ");
double preis = input.nextDouble();
input.nextLine();

Artikel artikel = new Artikel(artikelNr, art, bestand, preis);

Lager.legeAnArtikel(artikel);
}[/CODE]

Den Fehler hab ich jetzt unten bei Lager.legeAnArtikel(artikel), dort steht dann: "non-static method legeAnArtikel(Artikel) cannot be referenced from a static context"

Artikel sind Objekte, die ich erstellen kann und die Methode legeAnArtikel in Lager braucht so ein Artikel objekt als parameter. Beide Methoden sollten soweit ich weiß non static sein. Arbeite mit BlueJ übrigens

Ich hoffe mal, dass genug Infos hier drin sind, damit mir jemand helfen kann, bei Fragen dazu kann ich natürlich immer noch antworten! danke im voraus
 
Du versuchst, die nicht statische Methode legeAnArtikel auf der Klasse aufzurufen. Das geht natürlich nicht. Du musst die Methode auf einer Instanz von Lager aufrufen.
 
Du darfst nicht die Klasse benutzen sondern ein Objekt von der Klasse.
Objekte werden mit new erstellt.

So wie du es aufrufen willst müsste die Klasse static sein was sie ja nicht ist. Und genau das sagt au h die Fehlermeldung.
 
Danke für die Hilfe, aber es sollte kein neues Lager angelegt werden, weil das schon in einer vorherigen Methode passieren sollte:

[CODE lang="java" title="Klasse LagerDialog"]private Lager lagerAnlegen(){

System.out.println("Wie viele Artikel sollen in das Lager? ");
int maxAnzahlArtikel = input.nextInt();
input.nextLine();

return new Lager(maxAnzahlArtikel);
}[/CODE]

Ich hoffe mal ich verstehe das richtig, weil ich zuerst ein Lager anlege, dann erst die Methode legeAnArtikel aufrufe und dort mit dem vorher angelegten Lager gearbeitet wird. So wird ja jedes Mal bei Methodenaufruf ein neues Lager erstellt. Tut mir echt leid, aber bin da echt extrem lost und versteh es leider auch überhaupt nicht
 
Hast Du denn das Lager irgendwo in einer Variable gespeichert, so dass Du da erneut drauf zugreifen kannst? Du musst die Methode auf dem erzeugten Lager aufrufen.
 

Zurück
Oben