non-static variable cannot be referenced from a static context

UGG116

Grünschnabel
Guten Abend liebe Gemeinde,
ich hab eine ganz dummer Frage und ich hoffe, dass ihr mir weiter helfen könnt. Als Schulprojekt sollen wir einen Klassiker in Greenfoot nachprogrammieren. Mir wurde aufgetragen Frogger nach zu programmieren. Ich habe das Projekt soweit fertig, allerdings funktionieren 2 Sachen noch nicht richtig:


1.: der Frosch soll, wenn er auf einem SObject ist, zusätzlich zu seiner eigenen Geschwindigkeit noch die Geschwindigkeit des SObjects erhalten, sodass er quasi wie auf einem Floß steht. Ich poste einfach mal meinen Quellcode dafür wie ich es gelöst habe:
http://pastebin.com/Zu0jmzHj Ich habe die Stelle gekennzeichnet bei der Greenfoot mir beim kompilieren einen Fehler ausgibt. Als Fehler Meldung wird geschrieben: "non-static variable SObjectSpeed cannot be referenced form a static context". Was kann ich machen, damit dies nicht auftaucht?

2.: Das gleiche Problem nochmal, allerdings bei einer Boolean Abfrage in dieser Klasse, ich poste sie auch hier. Das ist auch die Klasse aus der ich in Fall 1 die Variable ziehen will.
http://pastebin.com/ku5rKeYA

Ich hoffe ihr könnt mir helfen, am besten mit einer, auch für einen verständlichen Antwort...

lG UGG116
 
Bez. Fehler 1: Um SObjectSpeed verwenden zu können, musst du erst einmal eine Instanz von SObject anlegen...

Bei 2: Wo tritt der Fehler auf?
 
Ich erstelle eine Instanz eines solche Objektes allerdings in einer Unterklasse von World, muss ich dann irgendwie darauf verweisen?
zu 2: Das Problem tritt auf, wenn ich mithilfe dieser Boolean Abfrage prüfen will, ob der Frosch auf dem Baumstamm ist,also in meiner Frosch Klasse (1. Link) eine Bedingung damit stellen will.

lG UGG116
 
Zuletzt bearbeitet:
1: Natürlich musst du die Instanz verwenden; die Klasse selber ist ja nur eine "Vorlage", wie die Instanzen auszuschauen haben
Wenn in der Klasse irgendeine int-Variable ist, gibts die eigentlich gar nicht, das bedeutet dann nur, dass jede Instanz der Klasse ein int mit dem Namen hat/haben wird.

2: Kannst du nicht einfach die Zeilennummer angeben?
Ich sehe da nichts von einem Baumstamm etc
 
ich weiß, das klingt jetzt sehr dumm, aber ich versteh ehrlich gesagt nicht wie man das macht. ich kann hier auchmal meine world klasse linken.
den zweiten punkt lass ich raus und mache das anders, aber das erste wäre schon wichtig für mich, weil es eine grundsätzliche sache ist. wenn ich das verstanden habe und ein beispiel dafür habe, bringt mir das bestimmt sehr viel
hier also meine level klasse:
http://pastebin.com/GSDDHPp2
nun möchte ich irgendwie an die variable e-k kommen, jenachdem auf welchem objekt der frosch grade ist

schönen abend ugg116
 
So wird das nichts
Das, was du gerade gepostet hast, ist nichts weiter als eine Vorlage, wie Instanzen von Level auszuschauen haben.
Jede der Instanzen von level hat dann die int e; int k... in sich drinnen.
Solange es aber keine einzige Instanz gibt, gibt es auch keine einzige Variable e oder k etc, auf die du zugreifen kannst.

Hast du nirgends so was wie
level meinNeuesLevel = new level();
stehen?
 
nein. ich benutze greenfoot, das ist ein programm um die grundlagen der programmierung zu erlernen. wahrscheinlich steht das irgendwo im festen teil, den man aber nicht einsehen kann. es gibt von greenfoot eine methode addedToWorld(), sie gibt zurück, was der wel hinzugefügt wird. ist eine solche methode von dir gesucht? danke dass du dir die zeit nimmst mir zu antworten...
 
Sehe erst jetzt, dass du Greenfoot ja schon im ersten Beitrag erwähnt hast :-(
Da ich selber nie damit etwas zu tun hatte, kann ich dir aber leider auch nicht sagen, wie du zu der Instanz kommst.

..Einen Versuch wäre das ja wert:
http://www.greenfoot.org/doc/javadoc/
unter World/getObjects :)

die Objekte kannst du mit instanceof durchprobieren, ob sie zur richtigen Klasse gehören...einen Versuch ists wert.
 
Zurück