Static-Probleme

pengwolf

Mitglied
Hi,

ich soll für die Uni einen Online-Shop machen und bin fast fertig. Auf den letzten Metern habe ich jetzt noch das Problem dass ich mit dem Static nicht zurande komme. Habe aber auch in beim Googlen nur gefunden, was es ist, aber nicht, wie ich damit richtig Arbeite.

In der Datei OnlineShop.java in Zeile 33 bekomme ich meinen Fehler. Da greife ich auf eine Funktion aus der Produktverwaltung.java(Z.58) zu. Fehlermeldung ist:

Code:
OnlineShop.java:33: non-static variable pv cannot be referenced from a static context
				pv.GetAll();
				^
1 error

Würde mich freuen, wenn mir jemand ein Stichpunkt zum googlen oder aber direkt helfen könnte. Schonmal herzlichen Dank.

Pengwolf

-------------------
Folgende Dateien habe ich:

kunde.java
Java:
public class Kunde{
	private String nameDesKunden;
	private String anschriftDesKunden;

	public Kunde(String name, String anschrift) {
		nameDesKunden = name;
		anschriftDesKunden = anschrift;
	}
	
	public String GetName() {
		return nameDesKunden;
	}

	public String GetAnschrift() {
		return anschriftDesKunden;
	}
}

kundenverwaltung.java
Java:
public class Kundenverwaltung{
	
	private Kunde kundenListe[];
	Kundenverwaltung() {
		kundenListe[0] = new Kunde("Herbert Maier", "Kreutzweg 28a, 57072 Siegen");
		kundenListe[1] = new Kunde("Heidi Schiffe", "Wellnesgasse 4, 13579 Schoenhausen");
		kundenListe[2] = new Kunde("Claudia Klum", "Wellnesgasse 4, 13579 Schoenhausen");
		kundenListe[3] = new Kunde("Peter Held", "Katzenweg 5, 98123 Froemmersbach");
	}

	public String GetKundenName(int id) {
		return kundenListe[id].GetName();
	}

	public String GetKundenAnschrift(int id) {
		return kundenListe[id].GetAnschrift();
	}

	public String GetAll() {
		String erg="";
		for(int i=0; i<= 3 ; i++) {
			erg += i+" "+GetKundenName(i)+", "+GetKundenAnschrift(i)+"\n";
		}
		return erg;
	}

}

Produkt.java
Java:
public class Produkt {
	private double preisDerWare;
	private String nameDerWare;
	
	public Produkt(double preis, String name) {
		preisDerWare = preis;
		nameDerWare = name;
	}
	
	public void SetName(String name) {
		nameDerWare = name;
	}

	public void SetPreis(double preis) {
		preisDerWare = preis;
	}

	public String GetName() {
		return nameDerWare;
	}

	public double GetPreis() {
		return preisDerWare;
	}

}

Produktverwaltung.java
Java:
import java.io.*;

public class Produktverwaltung {
	
	private Produkt lagerBestand[];	
	private String ladeFehler;
	private String sicherFehler;

	public Produktverwaltung() {
		lagerBestand[0] = new Produkt(24.99, "Suedwein");
		lagerBestand[1] = new Produkt(129.99, "Edelburgunder");
		lagerBestand[2] = new Produkt(3.49, "Speisekaese");
		lagerBestand[3] = new Produkt(5.99, "Erdammer");
		lagerBestand[4] = new Produkt(1499.00, "Trueffel");
	}

	public boolean LadeBestand() {

		boolean bFehler = false;	
	
		try {
			FileOutputStream fos = new FileOutputStream ("IO.txt");		
			ObjectOutputStream oos = new ObjectOutputStream(fos);
			oos.writeObject(lagerBestand);
			oos.close();
		} catch(IOException e) {
			bFehler = true;
			ladeFehler = ""+e;			
		}
		
		return bFehler;
	}

	public boolean SicherBestand() {
		boolean bFehler = false;	
	
		try {
			FileInputStream fis = new FileInputStream ("IO.txt");		
			ObjectInputStream ois = new ObjectInputStream(fis);
			lagerBestand = (Produkt[]) ois.readObject();
			ois.close();
		} catch(Exception e) {
			bFehler = true;
			sicherFehler = ""+e;			
		}
		
		return bFehler;
	}

	public String GetSicherFehler() {
		return sicherFehler;
	}

	public String GetLadeFehler() {
		return ladeFehler;
	}

	public String GetAll() {
		String erg="";
		for(int i=0;i <= lagerBestand.length; i++) {
			erg += i+" "+lagerBestand[i].GetName() + ", " + lagerBestand[i].GetPreis(); 
		}
		return erg;
	}
}

OnlineShop.java
Java:
import java.io.*;

public class OnlineShop{
	private Produktverwaltung pv = new Produktverwaltung();
	private Kundenverwaltung kv = new Kundenverwaltung();

	public static int zeigeHauptmenue() {
		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader br = new BufferedReader(isr);	
		String meldung = "", space = "";
		int zahl = 0;
		boolean bFehler = false;

		do {		
			System.out.print(space+"Online-Shop Wunschshop\n-----------------------------\n1 - Produkte anzeigen\n2 - Bestellung aufgeben\n3 - Bestellung abschicken\n0 - Programm beenden\n\n"+meldung+"Auswahl (0-3): ");
			try {			
				String eingabe = br.readLine();
				zahl = Integer.parseInt(eingabe);
				bFehler = false;
			} catch(Exception e) {
				meldung = "Falsche Eingabe! Bitte nur 0-3 Eingeben.\n";
				space = "\n\n\n\n\n";
				bFehler = true;
			} 
		} while(bFehler);
		
		return zahl;			
	}
	public static void main(String args[]){
		int auswahl = zeigeHauptmenue();
		switch(auswahl)	{
			case 1:
				//pv.GetAll(); <- Hier bekomme ich mein Problem mit dem Static!
				break;
			case 2:
			case 3:
			case 0:
		}
	}
}
 
S

SlaterB

Gast
oder die Methode aus einer nicht-statischen Methode aufrufen, in der main nur ein start()-Aufruf irgendeiner Klasse

am aller dringendsten aber:
Methoden unbedingt unbedingt klein schreiben!!
 

pengwolf

Mitglied
Danke für die rasche Antwort.

Die Lösung hatte ich im Internet schon gefunden. Tut mir leid, vergessen dazu zu schreiben. Dann erhalten ich folgenden Fehler:

Code:
java OnlineShop 
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.NullPointerException
	at Produktverwaltung.<init>(Produktverwaltung.java:10)
	at OnlineShop.<clinit>(OnlineShop.java:4)
Could not find the main class: OnlineShop. Program will exit.
 

T7V

Aktives Mitglied
Java:
lagerBestand = new int[4];
Füge mal diese zeile in den Konstruktor von Produktverwaltung ein.

Edit: und mach lagerbestand static
 

pengwolf

Mitglied
oder die Methode aus einer nicht-statischen Methode aufrufen, in der main nur ein start()-Aufruf irgendeiner Klasse

Habe es versucht:

Java:
(...)
	public void getKunden() {
		kv.GetAll();
	}
(...)
Java:
(...)
switch(auswahl)	{
    case 1:
        getKunden();
	break;
    case 2:
    case 3:
    case 0:
}
(...)

Code:
javac OnlineShop.java 
OnlineShop.java:37: non-static method getKunden() cannot be referenced from a static context
				getKunden();
				^
1 error
 
S

SlaterB

Gast
ein blinder Versuch ohne Kenntnisse bringt nichts,
du musst schon einmal grundsätzlich verstehen was static ist und was nicht und dann Methoden an Objekten aufrufen!
 

pengwolf

Mitglied
Hab es mir durchgelesen. Aber egal, wie ich versuche die Funktion aufzurufen, es kommt immer die gleiche Fehlermeldung.

Code:
non-static variable kv cannot be referenced from a static context
				kv.GetAll();
				^

ob ich das nun in eine andere Funktion packe und mit this.funktionsname() oder OnlineShop.funktionsname() aufrufe oder aber direkt wie oben. Der Link hat mir in sofern nicht weiter geholfen, da ich ja innerhalb einer class keine Probleme habe eine Funktion aufzurufen. Erst bei dem Übergang zur nächsten gibt es Probleme.
 
M

maki

Gast
Das Problem ist aber immer noch dasselbe, kann von static aus nicht einfach Objektmethoden aufrufen, dir fehlt das Verständnis dafür.
 
S

SlaterB

Gast
du musst kv nicht direkt als Variable sehen sondern als Attribut der Klasse OnlineShop,
also
OnlineShop o = new OnlineShop();
o.kv.getAll();

oder ähnliches
 

T7V

Aktives Mitglied
OK, du musst folgendes machen:


- mache folgende variablen static: kundenListe, pv, kv, lagerBestand, lade Fehler, sicherFehler

- initialisiere die arrays lagerBestand und kundenListe in den Konstruktoren der Klassen
 

T7V

Aktives Mitglied
Außerdem musst du in Produktverwaltung in GetAll in der Schleife
Java:
i < lagerBestand.length
nehmen und nicht
Java:
 i <= lagerBestand.length
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
B Static vs non static und Probleme daraus Java Basics - Anfänger-Themen 13
J Probleme mit static generische Klasse Java Basics - Anfänger-Themen 6
O Welcher Object-Lock-Pool bei static Variablen? Java Basics - Anfänger-Themen 3
A Instance methods should not write to "static" fields Java Basics - Anfänger-Themen 4
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
M static ArrayList in non-static Java Basics - Anfänger-Themen 12
S Methoden 2 non-static Methoden, trotzdem Fehler "non static method can not be referenced from a static context" Java Basics - Anfänger-Themen 9
R UML-Bild (Erkennung ob static o. nicht) Java Basics - Anfänger-Themen 18
R Schulaufgabe, Bruache Hilfe mit non-static Methoden Java Basics - Anfänger-Themen 2
B Static Attribute in einer Klasse, wie geht das? :O Java Basics - Anfänger-Themen 19
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
H Static Java Basics - Anfänger-Themen 5
K Ausgaben auf der Konsole (static Varible) Java Basics - Anfänger-Themen 9
S public static boolean Java Basics - Anfänger-Themen 4
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
L non-static Fehler Java Basics - Anfänger-Themen 16
S Klassenmethode ohne static Java Basics - Anfänger-Themen 2
M (Sehr großes Problem) Listen als static in anderen Klassen verwendet Java Basics - Anfänger-Themen 12
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
D Methoden Scannervariablen in static Methoden Java Basics - Anfänger-Themen 5
P non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 6
V the static method should be accessed is a static way Java Basics - Anfänger-Themen 6
NormanPatrickBenner static non-static Java Basics - Anfänger-Themen 82
N Erste Schritte "non-static method" oder "XYZ can not be resolved" Java Basics - Anfänger-Themen 21
B Email versenden, muss Methode static sein? Java Basics - Anfänger-Themen 7
R static in der Methode Java Basics - Anfänger-Themen 2
E Problem mit static Methode Java Basics - Anfänger-Themen 4
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
M Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 10
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
C Methoden Unterschied zwichen public int, public static int und public static void Java Basics - Anfänger-Themen 2
J Frage zu: public static void main (String[]args) Java Basics - Anfänger-Themen 1
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
D Das leidige Thema static.... Java Basics - Anfänger-Themen 15
Aprendiendo Interpreter-Fehler "non-static variable this cannot be referenced from a static context" Java Basics - Anfänger-Themen 2
T Problem mit static Java Basics - Anfänger-Themen 6
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
S Vererbung Zugriff auf Methode funktioniert nicht (static/non-static) Java Basics - Anfänger-Themen 3
snipesss Was kann 'static'? Java Basics - Anfänger-Themen 4
H Variablen error: non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 4
M public static int in ActionListener Java Basics - Anfänger-Themen 6
J static verschachtelte Klassen und innere Klassen Java Basics - Anfänger-Themen 1
H Nicht Static Funktion ohne Objekt aufrufen? Java Basics - Anfänger-Themen 6
E Objekte und static Java Basics - Anfänger-Themen 2
K Methoden Methoden in Methoden -> static oder nicht? Java Basics - Anfänger-Themen 7
D Erklärung static boolean Java Basics - Anfänger-Themen 6
L Was genau macht "public static void" ? Java Basics - Anfänger-Themen 12
U Erste Schritte cannot be referenced from a static context Java Basics - Anfänger-Themen 1
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
O Zu viel static im Projekt Java Basics - Anfänger-Themen 9
F Static final Klasse Java Basics - Anfänger-Themen 0
N static und Objekt kombiniert?!? Java Basics - Anfänger-Themen 3
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
B Klassen Eigene "non static" Klasse in Main verwenden! Java Basics - Anfänger-Themen 12
D neue public static class variablen in array speichern? Java Basics - Anfänger-Themen 6
A Static variablen --- Anwendungsbereich Java Basics - Anfänger-Themen 11
B Erste Schritte Wie komme ich aus Static raus?!! Java Basics - Anfänger-Themen 4
V Static Methods Java Basics - Anfänger-Themen 5
W Compiler-Fehler "non-static method cannot be referenced"-Problem Java Basics - Anfänger-Themen 6
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
3 OOP static class in einer Klasse Java Basics - Anfänger-Themen 6
B static individuell "vererben"? Java Basics - Anfänger-Themen 8
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
T Static Fehler Java Basics - Anfänger-Themen 1
R public static void Rückgabe Java Basics - Anfänger-Themen 5
P Compiler-Fehler public static void main, Grundloses Problem Java Basics - Anfänger-Themen 4
A Cannot make a static reference to the non-static field Java Basics - Anfänger-Themen 6
W Variablen Automatisch static? Java Basics - Anfänger-Themen 3
O Warum muss ich static? Java Basics - Anfänger-Themen 6
O Static Java Basics - Anfänger-Themen 15
E non-static method und static context Java Basics - Anfänger-Themen 15
B non static interface Methode Java Basics - Anfänger-Themen 16
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
S Static void Methode Java Basics - Anfänger-Themen 12
Q Unterschied zwischen static und keinem Modifier Java Basics - Anfänger-Themen 15
O Main-Methode static modifier umgehen Java Basics - Anfänger-Themen 10
J Variablen non-static variable Java Basics - Anfänger-Themen 2
P Erste Schritte public oder static oder wie? Java Basics - Anfänger-Themen 7
J static - Methoden Java Basics - Anfänger-Themen 22
X Erste Schritte Methode ohne Static Java Basics - Anfänger-Themen 4
B Classpath static block - Verwirrung Java Basics - Anfänger-Themen 2
S Methoden Warum ist sleep static? Java Basics - Anfänger-Themen 9
K static, non-static Krise Java Basics - Anfänger-Themen 4
R Schlüsselworte static Methoden und Imports Java Basics - Anfänger-Themen 10
M Methoden "Non-static method xy cannot be referenced from a static context" Java Basics - Anfänger-Themen 20
S Aufruf Einer Methode aus einer anderen Klasse - Static Fehler Java Basics - Anfänger-Themen 4
W Methodenaufruf innerhalb einer Klasse - static vs. this Java Basics - Anfänger-Themen 3
K Objekt erstellen - error: non-static variable this cannot be referenced from a static context Java Basics - Anfänger-Themen 17
H non-static method cannot be referenced from a static context Java Basics - Anfänger-Themen 2
Y Gebrauch von static Java Basics - Anfänger-Themen 29
L Cannot make a static reference to the non-static method Java Basics - Anfänger-Themen 6
T getClass() im static Kontext Java Basics - Anfänger-Themen 12
S Frage zu public static Java Basics - Anfänger-Themen 29
M Problem mit Static Method Java Basics - Anfänger-Themen 8
H Methoden Static ? Java Basics - Anfänger-Themen 10
K Erste Schritte Zugiff ohne static Java Basics - Anfänger-Themen 5
X Static char Problem Java Basics - Anfänger-Themen 11
H static final vs. final static Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben