Nicht-statische Methode in einer statischen aufrufen

Akkulader

Mitglied
Moinmoin

wir programmieren in der Uni mit Greenfoot und mein Ziel ist es heute einen Highscore zu bauen.

Ich habe also eine Klasse Score in der es die Methode
Java:
 public int scoreZaehlen()
gibt.
Die Methode ist einzig dafür da, um den Score immer um 1 zu erhöhen.

Nun möchte ich diese Methode in einer Methode einer anderen Klasse aufrufen nämlich:
Klasse = Gift.class
Methode:
Java:
 public  void collision ()

Wenn ich nun die Methode in collision() per
Java:
 Score.scoreZaehlen();
aufrufen will meckert Greenfoot ("non-static method scoreZaehlen() cannot be referenced from a static context").


Wie krieg ich das nun hin, dass ich den nicht-statischen Inhalt in einem statischen aufrufen kann?



Ich wär euch wirklich sehr dankbar für jegliche Hilfe!!:)
 

Michael...

Top Contributor
nicht statische Methoden, also Instanzmethoden können nur ein einer Instanz aufgerufen - nicht verwunderlich ;-)
Irgendwo muss also ein Score Objekt existieren/erzeugt werden und man muss an der entsprechenden Stelle im Code Zugriff auf das Objekt haben.
 

Akkulader

Mitglied
Ja, leider lernen wir nicht so die Basis von Java, sondern sollen alles gleich anwenden.
Wusste bis grade z.B. nicht, dass nicht statische Methoden Instanzmethoden sind : /


Hab das jetzt zumindest compiliert bekommen, jedoch krieg ich ne NullPointerException wenn das ausgeführt werden soll

Public Gift ist der Konstruktor der Klasse Gift
Java:
public Score score;
    
    public Gift()
    {
        this.score=score;
    }

Dann später:
Java:
 public  void collision (){
....
score.scoreZaehlen();
...
}
 

Volvagia

Top Contributor
Ist doch gut.
Theorie ist meistens langweilig und imho lernt man so auch viel besser. Wenn man etwas nicht braucht vergisst man es gleich wieder.

Java:
this.score=score;

Das schreibt die Variable score in die Variable score. Das ist nicht falsch, nur bringt es nichts.

Java:
this.score = new Score();

Ich glaube das meintest du.
 

Akkulader

Mitglied
Joa ist eig spannend. Aber leider lernt man die Grundlagen einfach nicht. Wir sind mittlerweile bei der 5. Übung und bis jetzt haben wir alles nur durch try&error gelernt. Da fehlen einfach die Grundlagen.


Es gibt bei
Java:
 this.score= new Score();
zumindest keinen NullPointer aber dennoch passiert einfach nichts.

Hier mal meine scoreZaehlen Methode:
Java:
 public int scoreZaehlen()
    {
        
        //if(Greenfoot.isKeyDown("t"))
        //{
            
score = score + 1;
            return score;
            
        //}
       
        
    }

Das // wird nicht ausgeführt. Die Methode funktioniert allerdings, wenn ich das // wegmach und im Spiel dann T drücke.. iwo muss es am Methodenaufruf hapern..:(
 

Volvagia

Top Contributor
Ich bezweifel, dass die Methode ohne Kommentaren funktionieren wird. Da müsste dir ein Error fliegen, sofern sich Greenfoot an den original Syntax hält.

Müsste richtig arbeiten, falls collision funktioniert.
Füg einfach ein paar System.out.printlns oder einen entsprechenden pendant hinzu, um den Programmfluss im Auge zu behalten.
 

Akkulader

Mitglied
Also wenn ich nur
Java:
 public int scoreZaehlen()
    {
       
            score = score + 1;
            return score;
    }
schreibe und diese Methode in der act()-Methode (die immer ausgeführt wird) abrufe, dann zählt er kontinuierlich hoch.
Mit der if-Bedingung halt nur wenn ich T Drücke.

Das einzige was ich mir vorstellen könnte wäre, dass ich die scoreZaehlen() Methode in der act() aufrufen muss, auch wenn ich die if-Bedingung nicht einfüge.
Dann bestünde aber das Problem, wie ich scoreZaehlen() nur Aufrufen lasse, wenn es aus der anderen Klasse gewünscht ist (und nicht immer).
 

Akkulader

Mitglied
Du prüfst ob das Ereignis, dass Punkte gibt zutrifft und rufst dann erst auf? ???:L
Wenn du immer aufrufst gibt es auch immer Punkte.

Ja ich möchte, dass nur gezählt wird, wenn mein Held gegen das eine Instanz aus Gift.class läuft



Ich KANN folgendes machen:
Java:
public void act()
{
   scoreZaehlen();
   scoreAnzeigen();
}

public int scoreZaehlen()
    {
        
        if(Greenfoot.isKeyDown("t"))
        {
            
            score = score + 1;
            return score;
            
        }
       
        
    }
Dann wird immer hochgezählt, wenn ich T drücke.


Wenn ich folgendes mache, dass addiert der IMMER.
Java:
public void act()
{
   scoreZaehlen();
   scoreAnzeigen();
}



public int scoreZaehlen()
    {
                 
            score = score + 1;
            return score;    
        
    }


Ich WILL sozusagen das:
Java:
public void act()
{
   
   scoreAnzeigen();
}



public int scoreZaehlen()
    {
                 
            score = score + 1;
            return score;    
        
    }
Denn damit könnte ich theoretisch aus einer anderen Klasse heraus auf scoreZaehlen() zugreifen.
Das geht ja aber leider nicht :(
Deshalb dachte ich, dass das Problem daher rühren könnte, dass scoreZaehlen(); nicht mehr in der act()-Methode stehen würde. Das darf dort aber nicht stehen, da es wie gesagt IMMER aufgerufen würde.
 

Akkulader

Mitglied
Mal ne andere Frage:

Wenn ich per
Java:
 public int scoreZaehlen()
    {
            
            score = score + 1;
            return score;
     }
den score erhöhe.



Wie kann ich ihn dann ausdrucken?
Folgendes gibt nur den alten Scorewert aus.
Java:
 public void scoreSetzen()
    {
        
       
            GreenfootImage scoreImg = new GreenfootImage (300,200);
            setImage(scoreImg);
            getImage().setColor(new Color(172, 220, 230));
            getImage().setFont(new Font ("Serif", Font.BOLD, 30));
            getImage().drawString("Score: "+score, 100, 100);
            
        
    }

Gibt es eine Möglichkeit getImage().drawString("Score: "+score, 100, 100); so zu verändern, dass da
("Score: "+ [returnter]score, 100, 100) steht?

Wär richtig toll wenn mir geholfen werden könnte :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Statische Methode return funktioniert nicht. Java Basics - Anfänger-Themen 19
R Methoden Nicht statische Methode aus Main aufrufen Java Basics - Anfänger-Themen 2
K nicht-statische Methode aufrufen Java Basics - Anfänger-Themen 3
P nicht statische methode instantiieren Java Basics - Anfänger-Themen 7
F Statische Methode - Nicht Statische Methode Java Basics - Anfänger-Themen 10
Queiser Nicht statische Klassen Java Basics - Anfänger-Themen 6
C nicht statische Methoden Java Basics - Anfänger-Themen 4
S Datentypen nicht lineare STATISCHE Datenstruktur? Java Basics - Anfänger-Themen 10
J Unterschied zwischen statische und nicht statische Methoden? Java Basics - Anfänger-Themen 14
E Statische Member können nicht vererbt werden? Java Basics - Anfänger-Themen 10
M Statische und nicht-statische Funktionen: Desktop.browse(uri); Java Basics - Anfänger-Themen 4
T in statischem Kontext auf nicht statische Variable beziehen Java Basics - Anfänger-Themen 5
M öffentliche nicht-statische Funktion fremder Klasse ausführn Java Basics - Anfänger-Themen 16
O nicht-statische Inhalte auf statische Inhalte verweisen Java Basics - Anfänger-Themen 19
D Statische und Nicht-Statische Methoden Java Basics - Anfänger-Themen 7
A "Hello World"-Programm läuft nicht Java Basics - Anfänger-Themen 16
D Regex greift nicht richtig Java Basics - Anfänger-Themen 4
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
K Warum wird mir auf der Konsole des Servers nicht "xxxx" angezeigt (Server/Client) Java Basics - Anfänger-Themen 4
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
S nach Import von jars (PLC4x) in Eclipse kann nicht mehr compiliert werden Java Basics - Anfänger-Themen 9
J Datenüberwachung funktioniert nicht Java Basics - Anfänger-Themen 9
S Wie debugge ich dies am besten: SingleThreadExecutor führt Task nicht aus..? Java Basics - Anfänger-Themen 29
H JDK installieren jdk-21 wird nicht erkannt Java Basics - Anfänger-Themen 13
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
K Warum wird mir "Empfangen vom Client:" nicht sofort ausgegeben(Server/Client) Java Basics - Anfänger-Themen 3
mo13 JTextField funktioniert nicht Java Basics - Anfänger-Themen 4
J .jar datei öffnen funktioniert nicht Java Basics - Anfänger-Themen 17
M Methode zielnah zeigt das gewünschte Ausgabe nicht an Java Basics - Anfänger-Themen 3
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
M OOP Brüche nicht richtig berechnen Java Basics - Anfänger-Themen 3
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
K TicTacToe belegtes feld nicht neu besetzbar Java Basics - Anfänger-Themen 1
K TicTacToe belegtes Feld nicht neu besetzbar Java Basics - Anfänger-Themen 3
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
M Queue-Datenstruktur: nach dem Elementen entfernen, das Ergebnis ist immer noch nicht optimal. Java Basics - Anfänger-Themen 3
K Programm compilierbar aber nicht ausführbar... Java Basics - Anfänger-Themen 21
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
G Mit jPackage erstellte EXE funktioniert nicht Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
G Robot funktioniert nicht bei SelectionListener Java Basics - Anfänger-Themen 6
D MacOS: PDF erstellen geht nicht Java Basics - Anfänger-Themen 1
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
J jar Befehl wird nicht erkannt Java Basics - Anfänger-Themen 7
missy72 Erste Schritte (nicht) Deterministischer endlicher Automat Java Basics - Anfänger-Themen 9
T Getter/Setter - wie sieht ein Setter aus? Und wie nicht? Java Basics - Anfänger-Themen 34
T catch(InputMismatchException) wird nicht ausgefürt/erkannt Java Basics - Anfänger-Themen 12
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
P Netbeans installation geht nicht Java Basics - Anfänger-Themen 26
R RegEx funktioniert nicht Java Basics - Anfänger-Themen 14
T HashMap Lsite gibt die sachen nicht aus wie gewollt. Java Basics - Anfänger-Themen 3
H Counter durch gepresste Taste nur auf 1 erhöhen und nicht durchzählen lassen Java Basics - Anfänger-Themen 7
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
T scanner nicht erkannt Java Basics - Anfänger-Themen 3
monsterherz Punkt Notation funktioniert nicht Java Basics - Anfänger-Themen 4
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
monsterherz einfache Methode mit Fehler den ich nicht finde Java Basics - Anfänger-Themen 21
monsterherz if / else if mit Fehler den ich leider nicht finde Java Basics - Anfänger-Themen 11
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
KeinJavaFreak Erste Schritte Programm "Java(TM) Platform SE binary " nicht vorhanden Java Basics - Anfänger-Themen 1
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
Darkherobrine9 Import klappt nicht Java Basics - Anfänger-Themen 7
N Programm Funktioniert mit .txt Datei aber nicht mit .rtf Datei Java Basics - Anfänger-Themen 2
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
P BeforeEach AfterEach werden nicht ausgeführt. Java / Selenium Java Basics - Anfänger-Themen 4
I Erste Schritte Einfache Datenbank-Webseite erstellen als Nicht-IT-lerin Java Basics - Anfänger-Themen 24
N Interpreter-Fehler Compiler zeigt keine Fehler an, aber das Programm läuft nicht (BlueJ) Java Basics - Anfänger-Themen 2
D Quellcode für cmd funktioniert nicht Java Basics - Anfänger-Themen 9
C Kann mir jemand sagen warum ich nicht mal rechnen kann ? Java Basics - Anfänger-Themen 32
K Java Lotto Spiel; ich komme nicht weiter Java Basics - Anfänger-Themen 15
A JavaFX-Anwendung läuft nicht mit Selenium WebDriver Java Basics - Anfänger-Themen 0
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
T Wie kann man es machen das ein Objekt nicht übermalt wird Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
heinrich172 Methoden Trotz gleichem Element stimmt Vergleich nicht? Java Basics - Anfänger-Themen 7
I Entity Objekt nicht gefunden -> Webhook empfangen in der gleichen Methode (Transaktion) Java Basics - Anfänger-Themen 37
K warum kann ich das Objekt nicht erstellen ? Java Basics - Anfänger-Themen 2
MiMa Ungültiges Datum wird nicht erkannt ?? Java Basics - Anfänger-Themen 6
J Meine Mails gehen nicht raus Java Basics - Anfänger-Themen 8
Zrebna Kann Java Programm nicht in Konsole ausführen Java Basics - Anfänger-Themen 1
S Ist JDK jetzt free oder nicht? Java Basics - Anfänger-Themen 5
K Warum läuft das Programm nicht(bzw. nicht richtig) Java Basics - Anfänger-Themen 4
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
M Methoden Methode 'wiederhole' nicht gefunden (Uebersetzungsfehler) Java Basics - Anfänger-Themen 1
D Eclipse will nicht auslesen Java Basics - Anfänger-Themen 6
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
TeacherMrSSimon Schachspiel, Werte in Figur eintragen klappt nicht Java Basics - Anfänger-Themen 23
B von Java/Eclipse verwendete Datei existiert gar nicht? Java Basics - Anfänger-Themen 6
ms_cikar Bin to Float convertieren funktioniert nicht Java Basics - Anfänger-Themen 24
B Schrankensystem mit Farberkennung für Flashgame funktioniert nicht wie geplant Java Basics - Anfänger-Themen 4
M JButton setBackground() färbt nicht den ganzen Knopf Java Basics - Anfänger-Themen 4
K REGEX - Rechnungsbetrag wird nicht richtig ausgelesen. Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben