Endlosschleife beenden

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo zusammen,

such wie verrückt und finde leider nix. Ein kleines Progrämmchen (reine Konsolenanwendung) soll die ganze Zeit in einer Endlosschleife laufen und am Anfang jedes Schleifendurchgangs einmal überprüfen ob inzwischen ein "q" gedrückt wurde, womit sich das Progrämmchen beendet (also aus der Schleife rausgeht). Wie macht man sowas? Hat jemand einen kleinen Tipp?

Danke schonmal
 

mic_checker

Top Contributor
Willst du das machen im Sinne von :

> Möchten Sie das Programm jetzt beenden ? (J/N)
> N
> ..... //etc.
> Möchten Sie das Programm jetzt beenden ?
> J
> Programm beendet.

?

Dann würde ich einfach von der Standardeingabe einlesen, gucken ob ein J gedrückt wurde und andernfalls die Schleife weiter durchlaufen lassen...
 
G

Guest

Gast
Danke erstmal, aber das Programm soll ja gar nicht warten, bis einer was drückt. Es soll feststellen: Ah, es wurde keine Taste gedrückt, also starte ich den nächsten Durchlauf, und eben ansonsten beenden.
 

L-ectron-X

Gesperrter Benutzer
Eine kleine Demonstration. Wer will, kann den fehlenden Teil ergänzen. :wink:
Code:
import java.io.*;
import java.text.*;
import java.util.*;

public class ConsoleBeenden {
   public static void main(String[] args) {
      ConsoleBeenden cb = new ConsoleBeenden();
   }
   
   public ConsoleBeenden() {
      new ZeitAusgabe().start();
      new Eingabe().start();
   }
   
   //Eine innere Klasse zum Lesen von der Tastatur
   class Eingabe extends Thread {
      BufferedReader br;
      
      public Eingabe() {
         br = new BufferedReader(new InputStreamReader(System.in));
      }
      
      public void run() {
         char c = 0;
         while(c != 'q') { //Schleife prüft jede Eingabe auf "q"
            try {
               c = (char)br.read();
            }
            catch(IOException e) {
               System.out.println("Fehler beim Lesen von der Tastatur!");
            }
         }
         System.exit(0);
      }
   }
   
   //Eine Uhr, die auf einer Zeile in der Konsole läuft (innere Klasse)
   class ZeitAusgabe extends Thread {
      public void run() {
         String zeit = null;
         while(true) { //Endlosschleife
            DateFormat df = new SimpleDateFormat("kk:mm:ss");
            zeit = df.format(new Date());
            System.out.print(zeit);
            try {
               Thread.sleep(1000);
            }
            catch(InterruptedException e) {
               System.out.println("Fehler während CPU-Freigabe");
            }
            for(int i = 0, j = zeit.length(); i < j; i++) {
               System.out.print("\b");
            }
         }
      }
   }
}
 

MPW

Top Contributor
Ne, das ist nicht das, was er wil...was er will macht aber keinen sinn...es seiden es gibt Füllmaterial.

Macht die Schleife, so fern q nicht gedrückt wurde etwas? Wie z.B. in L-ectron-X' Beispiel? Sonst macht es ja keinen sinn..sie weiterlaufen lassen.

Das da oben erzeugt doch aber so weit ich weiß eine Eingabezeile, die erst mit enter bestätigt werden muss, oder?
Das willst du doch eigentlich nicht.

Das was du möchtest geht glaube ich in Java nicht - wurde schon oft diskutiert, such mal nach Konsoleneingabe ohne bestätigen oder so...

Das was du willst basiert nämlich auf einer art Hotkey, soetwas ist nur native möglich.
 
G

Guest

Gast
Huch, hier hat sich ja noch was entwickelt... Grundsätzlich macht die Schleife schon Sinn, hat einen Haufen zu tun und muss die ganze Zeit laufen. und am Anfang immer überprüfen, ob irgendwas eingegeben wurde. Bei "q" soll er sich beenden, und bei ein paar anderen Buchstaben mal auf User-Anforderung was anderes machen. Der nächste Schleifendurchlauf soll halt nicht erst auf ein Enter warten (müsste ja die ganze Zeit davorstehen ;))

@Bleiglanz: Ja, das das so evtl gehen könnte, ist mir so halbwegs klar, nur wollte ich mir das bei einer reinen Konsolenanwendung sparen. Ehrlich gesagt habe ich mich mit GUI-Zeugs unter Java noch nicht wirklich beschäftigt (bin hier bei den Anfängerfragen genau richtig).
 

Bleiglanz

Gesperrter Benutzer
in der Art dürfte das mit Java schwer sein, weil die IO nun mal "blockiert" :)

also einen eigenen Thread, der mit read von der Tastatur liest und dann ein globales Flag setzt, das in der Schleife ausgewertet wird
 
G

Gast

Gast
Bei näherer Betrachtung von L-ectron-X Beispiel: so sollte es doch eigentlich funzen, oder nicht?! Da kann ja der Eingabethread so lange auf Enter warten, wie er will, die Hauptschleife läuft doch weiter... Gleich mal ausprobieren...
 

MPW

Top Contributor
jaja, aber bleibt das dann nicht hängen, wenn man zweimal ein System.in macht?
Irgendwie ist das schon eine schwäche von Java...es müsste auch Hotkeys geben..das nervt irgendwie.

Ähm, geht nix über 'ne Gui? Muss das wirklich so sein, über eine Gui gibt's dutzende Möglichkeiten...
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
B Endlosschleife Thread sauber beenden Java Basics - Anfänger-Themen 19
S Hilfe bei Endlosschleife Java Basics - Anfänger-Themen 2
noah1407 endlosschleife Java Basics - Anfänger-Themen 7
G Endlosschleife keine Rückgabe Java Basics - Anfänger-Themen 36
sserio Endlosschleife ja nein? Java Basics - Anfänger-Themen 13
javapingu Endlosschleife bei User Input mit try Scanner Java Basics - Anfänger-Themen 7
S While-Schleife geht in Endlosschleife über, warum? Java Basics - Anfänger-Themen 6
O Endlosschleife abbrechen Java Basics - Anfänger-Themen 10
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
S Interpreter-Fehler Endlosschleife zur Laufzeit aber warum? Java Basics - Anfänger-Themen 15
T Erste Schritte Endlosschleife & wozu braucht man /* und */ Java Basics - Anfänger-Themen 19
J Endlosschleife bei Try-Catch? Java Basics - Anfänger-Themen 3
S Endlosschleife - Warum? Java Basics - Anfänger-Themen 1
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
C Collatzfolge endlosschleife. Java Basics - Anfänger-Themen 4
D Array in Endlosschleife überschreibt vorherige Werte Java Basics - Anfänger-Themen 4
E Eulersche Zahl berechnen, Endlosschleife Java Basics - Anfänger-Themen 2
N Endlosschleife... Warum? Java Basics - Anfänger-Themen 12
P Kapselung Problem - Endlosschleife Java Basics - Anfänger-Themen 10
M Endlosschleife bricht durch switch ab Java Basics - Anfänger-Themen 17
D Endlosschleife und ich komme nicht raus! Java Basics - Anfänger-Themen 8
N Erste Schritte Endlosschleife und Exception Java Basics - Anfänger-Themen 5
R Endlosschleife nach InputMismatchException Java Basics - Anfänger-Themen 2
S Endlosschleife? Java Basics - Anfänger-Themen 2
T Endlosschleife Java Basics - Anfänger-Themen 2
Z Endlosschleife Java Basics - Anfänger-Themen 6
T Endlosschleife Java Basics - Anfänger-Themen 12
H Wieso ist das eine Endlosschleife? Java Basics - Anfänger-Themen 8
StupidAttack Endlosschleife, Sockets Java Basics - Anfänger-Themen 2
C ungewollte Abbrüche in einer Endlosschleife Java Basics - Anfänger-Themen 6
E komische endlosschleife Java Basics - Anfänger-Themen 6
7 Endlosschleife pausieren Java Basics - Anfänger-Themen 11
F .readLine() erzeugt endlosschleife Java Basics - Anfänger-Themen 4
R Wieso hänge ich hier in einer Endlosschleife (vermute ich zumindest)? Java Basics - Anfänger-Themen 2
F Falscheingabe abfangen - Endlosschleife Java Basics - Anfänger-Themen 5
R warum endlosschleife? Java Basics - Anfänger-Themen 7
W Fakultät, warum Endlosschleife? Java Basics - Anfänger-Themen 15
S JTable Endlosschleife Java Basics - Anfänger-Themen 5
J Aus endlosschleife kommen Java Basics - Anfänger-Themen 5
R Endlosschleife verhindert das Schließen des Fensters Java Basics - Anfänger-Themen 10
Povlsen84 Endlosschleife Java Basics - Anfänger-Themen 5
V Bubble Sort endet in Endlosschleife Java Basics - Anfänger-Themen 4
Antoras Endlosschleife Java Basics - Anfänger-Themen 8
J Wartezustand in Endlosschleife - bessere Alternativen Java Basics - Anfänger-Themen 20
H Problem beim Einlesen einer Datei (Endlosschleife ?) Java Basics - Anfänger-Themen 3
N Endlosschleife? Java Basics - Anfänger-Themen 3
V mehrere Threads starten + Endlosschleife Java Basics - Anfänger-Themen 3
I Hilfe wer findet mein Fehler in bei der Endlosschleife Java Basics - Anfänger-Themen 7
G Sound/Endlosschleife/Abbruchproblem Java Basics - Anfänger-Themen 3
G HappyNumbers - Endlosschleife Java Basics - Anfänger-Themen 11
0 Endlosschleife beim Integer Array mischen? Java Basics - Anfänger-Themen 3
M OutputStream funktioniert nur in Endlosschleife ? Java Basics - Anfänger-Themen 4
G Endlosschleife, aber warum? Java Basics - Anfänger-Themen 12
P Wie kann diese Schleife beenden Java Basics - Anfänger-Themen 1
T Thread beenden aus zweiter Klasse Java Basics - Anfänger-Themen 4
F nach Methode Programm nicht beenden Java Basics - Anfänger-Themen 9
H Eine Methode über Actionlistener beenden Java Basics - Anfänger-Themen 8
K Bufread.readLine())!= null wie beenden? Java Basics - Anfänger-Themen 4
J Programm beenden ohne System.exit() oder Runtime.exit() Java Basics - Anfänger-Themen 5
D Konsoleneingabe mit Abbruchbedingung beenden Java Basics - Anfänger-Themen 11
R Error, wenn mehrere Clients gleichzeitig die Verbindung beenden Java Basics - Anfänger-Themen 16
ralli85 Programm nach einer gewissen Anzahl von Eingaben beenden Java Basics - Anfänger-Themen 15
W Geschachtelte for-schleife beenden Java Basics - Anfänger-Themen 2
F Thread der auf eine Queue wartet, sicher beenden Java Basics - Anfänger-Themen 4
KaffeeFan Timer beenden Java Basics - Anfänger-Themen 12
E Threads Doppelte Threads beenden Java Basics - Anfänger-Themen 4
T Input/Output Programm beenden durch Eingabe Java Basics - Anfänger-Themen 1
O Per return Run Methode beenden Java Basics - Anfänger-Themen 3
R for-Schleife bei erfüllter Bedingung beenden Java Basics - Anfänger-Themen 7
B Timer beenden? Java Basics - Anfänger-Themen 0
T For-Schleife mit Esc Beenden Java Basics - Anfänger-Themen 5
X Robot beenden oder zerstören Java Basics - Anfänger-Themen 7
T Bei Buttonklick Aktion starten, nach erneutem Klick beenden Java Basics - Anfänger-Themen 4
J beenden durch choice Java Basics - Anfänger-Themen 11
L Methode per Knopfdruck beenden Java Basics - Anfänger-Themen 3
TheSorm java Schleife beenden per Tastendruck Java Basics - Anfänger-Themen 10
Bluedaishi Klassen Thread über if Anweisung starten und von anderer Klassen über Button Beenden Java Basics - Anfänger-Themen 34
FreeFun Java Anwendung beenden Java Basics - Anfänger-Themen 7
M Programm beenden über menueItem "Beenden"! Java Basics - Anfänger-Themen 5
D Applet beenden Java Basics - Anfänger-Themen 7
A mit break if beenden Java Basics - Anfänger-Themen 6
A Programm beenden Java Basics - Anfänger-Themen 6
P Threads Thread und Zugriff auf externe Methode beenden Java Basics - Anfänger-Themen 4
E Intanz einer Klasse beenden Java Basics - Anfänger-Themen 6
S Komplette Rekursion beenden? Java Basics - Anfänger-Themen 2
E Prozesse überwachen und gezielt beenden Java Basics - Anfänger-Themen 3
L Prozess beenden Java Basics - Anfänger-Themen 3
T Opaque kennt er nicht/ programm beenden?? Java Basics - Anfänger-Themen 9
R Programm nach ablauf eines Timers beenden Java Basics - Anfänger-Themen 10
K Zeit ablaufen lassen und nach Ablauf beenden Java Basics - Anfänger-Themen 5
c_sidi90 javax.exe beenden nach Programmende Java Basics - Anfänger-Themen 10
D Programm durch eingabe von einer "0" beenden... Java Basics - Anfänger-Themen 21
Steve5000 Externe Batch-Datei starten und anwendung beenden?! Java Basics - Anfänger-Themen 4
B Java-Programm-Dienst sauber beenden Java Basics - Anfänger-Themen 6
M Probleme beim Beenden eines Threads Java Basics - Anfänger-Themen 25
J Schleife durch nichtseingeben/Enter beenden. Java Basics - Anfänger-Themen 5
C Exceptions beim Beenden Java Basics - Anfänger-Themen 2
J Methode beenden Java Basics - Anfänger-Themen 6
T switchcase innerhalb Schleife: von case-Fall aus Schleife beenden Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben