Compiler-Fehler not abstract and does not override

Saschaa

Mitglied
Hallo,

gleich mal Vorweg, ich arbeite erst ganz kurz mit Java, schön ist er Code also wahrscheinlich nicht.

Ich habe ein Programm das alle 0,5 Sekunden ein Array in der Konsole ausgibt. Währenddessen soll man die Pfeiltasten drücken können und dadurch die Variable intRichtung geändert werden.
Das Versuche ich in einem neuen Thread zu lösen.
Habe aber dieses Problem

.\einthread.java:4: error: einthread is not abstract and does not override abstract method run() in
Runnable
class einthread implements Runnable{
^
1 error

Java:
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyListener.*;
class einthread implements Runnable{
    public Integer abc(){
        int intRichtung;
        while(true){
            intRichtung = KeyEvent.getKeyCode();
            return intRichtung;
        }
    }
}

Und ich bin mir auch nicht ganz Sicher wie ich das aufrufe, ist das Richtig?
Java:
(new Thread(new einthread())).start();

Und ich habe auch nicht brauchbares gefunden wie ich den Thread wieder beenden kann.
Thread.Stop();
konnte ich nirgends Sinnvoll einbauen....

Bin dankbar für jeden Tipp

Grüße
Sascha
 
Zuletzt bearbeitet von einem Moderator:
Runnable ist ein Interface und hat eine Methode void run(); deklariert. Die musst du auch schon in deiner Klasse (einthread ist wirklich ein schlechter Name!) schon implementieren (mit der selben Signatur) oder eben die Klasse abstract deklarieren.
 
Okay mit public void run(){}; krieg ich schonmal keinen Fehler, aber er gibt mir auch keinen Wert zurück, auch nicht bei intRichtung = 2;
Ist den
(new Thread(new einthread())).start();
richtig?
 
Wenn run leer ist, kann ja auch nichts passieren 😉
Innerhalb von run muss deine Logik ausgeführt werden, ist aber mit deinem obigen Code so nicht möglich, da run nichts zurückgeben kann.
 
Hm, aufrufen geht nun, aber zurückgeben irgendwie nicht?

Java:
        einthread t = new einthread();
        t.abc();


Java:
public Integer abc(){
    System.out.print("test");
        int intRichtung = 2;
        return intRichtung;
    }

"test" gibt er aus, aber die Variable ändert er nicht auf 2....Wieso?

Bitte bin hier grad echt am verzweifeln...
 
Zuletzt bearbeitet von einem Moderator:
Deine Methode macht ja auch nichst außer eine Variable deklarieren und mit dem Wert 2 initialisieren.
Diese Wert gibst du dann zurück, aber mit der Rückgabe wird gar nichts gemacht. Was sollte denn deiner Meinung nach passieren bzw. gemacht werden?
 

Zurück
Oben