Scanner-Eingabe nach gewissem Zeitraum überprüfen

MrBurtback

Neues Mitglied
Guten Morgen liebe Freunde!

Ich schreibe zur Zeit an einem MauMau-Programm, welches in der Konsole ausgegeben wird.
Der Spieler soll, wenn er nur noch eine Karte auf der Hand hat, eine gewisse Zeit haben, "letze Karte" einzugeben, falls er dies versäumt, muss er eine Karte ziehen.

Hier liegt nun mein Problem.
Ich habe die aktuelle Zeit von "date.getTime()" in einer long-Variablen "aktuelleZeit" gespeichert und eine while-Schleife gestartet, welche solange laufen soll, wie >"aktuelleZeit+5000" != "date.getTime()"<.
Bei der Scanner-Eingabe in der Schleife stoppt der Ablauf aber und er wartet auf eine Eingabe.

Gibt es eine Lösung für mein Problem? 😀

Vielen Dank und LG
 
Quick & Dirty Example:

Java:
package javaforum.org.timedscanner;

import java.util.Date;
import java.util.Scanner;

public class TimedScanner {

    public static void main(String[] args) {
        System.out.println("Du hast 5 Sekunden um 'x' einzugeben...");
       
       
        Thread reading = new Thread(new Runnable() {
            @Override
            public void run() {
                String eingabe = null;
               
                do {
                    eingabe = (new Scanner(System.in)).nextLine();
                } while(!eingabe.equals("x"));
            }
        });
        reading.start();

        Date start = new Date();
        do {
            if(reading.isAlive()) {
                System.out.println("Warte immer noch auf korekte Eingabe...");
            } else {
                System.out.println("Eingabe erfolgt!");
                break;
            }
           
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        } while((new Date()).getTime() - start.getTime() < 5000);
       
    }

}
 

Zurück
Oben