Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen

xJan45x

Aktives Mitglied
Hallo Community,
Ich entwickele zur Zeit eine Konsolenanwendung die auf einem Raspberry läuft. Die gesamte Eingabe/Ausgang erfolgt somit über die Konsole.

Ich habe ein Thread erstellt welcher sich um die Eingabe kümmert realisiert mit einem Scanner. Funktioniert wunderbar nun ist es so das die Anwendung gegen unbefugten Benutzen geschützt sein soll. Daher hab ich ein Systempasswort mit einprogrammiert. Dieses muss der Nutzer wenn die Anwendung gestartet wird eingeben bevor er überhaupt auf das eigentlich Programm zugreifen kann.

Damit die Passworteingabe nicht sichtbar ist in der Konsole verwende ich die readPassword() Funktion aus der java.io.Console Klasse. Und da ist genau das Problem. Wenn die Anwendung startet greift die Software erst auf readPassword zu und der Scanner Thread läuft noch nicht es funktioniert alles wie es soll. Nutzt der Nutzer den "logout" Befehl wird er abgemeldet und der Scanner Thread kann ganz normal über ein Flag unterbrochen werden bevor der Scanner wieder bei scanner.hasNextLine() ankommt.

Nun jetzt könnte man ja vergessen sich mit "logout" abzumelden also hab ich noch ein Logout Timer hinzugefügt der nach X Minuten den Nutzer automatisch abmeldet. Und hier kommt das Problem, sobald der Logout Timer auslöst wird das Flag für den Scanner Thread gesetzt jedoch bleibt der Scanner Thread ja so lange aktiv bis er wieder eine neue Zeile bekommt und erst dann würde sich der Thread beenden.

Bedeutet also für mich das die readPassword() Funktion noch nicht greift und das Passwort beim eingeben sichtbar ist weil es vom Scanner Thread ausgewertet wird. Erst dann läuft die Anmeldung über die readPassword() Funktion weil der Scanner Thread beendet ist.

Ich muss den Scanner Thread vorher beenden bevor ich wieder eine Anmeldung erlaube. Eine Möglichkeit wäre es den InputStream vom Scanner zuschließen mit scanner.close() nur dann kann ich den InputStream nicht wieder öffnen weil es sich dabei um System.in handelt. Ich hab schon mehreres versucht mit einer eigenen InputStream Klasse die halt das close Überschreibt und nichts macht aber das führt nicht zum gewünschten Erfolg. Auch hab ich mit PipedInput/OutputStreams versucht ein Userinput per Code auszulösen. Aber da bräuchte wieder ein Thread der den System.in Stream ausliest und den PipedInputStream füttert ...

Aktuell bleibt mir da nur die Möglichkeit den Nutzer aufzufordern erst irgendwas einzugeben um den Scanner Thread zu beenden und dann das Passwort. Was aber meiner Meinung nach eine große Sicherheitslücke darstellen würde da der Nutzer dann das Passwort versehentlich direkt eingeben könnte und es somit sichtbar wäre was verhindert werden soll.

Hat jemand ne Ahnung oder Idee wie ich Scanner block von hasNextLine oder die read Funktionen vom InputStream unterbrechen kann?

Thread.stop() ist ja veraltet und wird nicht empfohlen zu verwenden. Funktioniert bei mir auch tatsächlich nicht immer habs getestet. Die available() Funktion vom InputStream abzufragen führt bei mir dazu das ich gar keine sichtbaren Eingaben in der Konsole machen kann und wird ja auch nicht empfohlen damit zu arbeiten. Das gleiche ja mit der ready() Funktion vom BufferedReader als alternative zum Scanner.

Code:
started  = true;
scan      = new Scanner(System.in);
thread      = new Thread(new Runnable() {
  
    @Override
    public void run() {
        if(newInputLine) sendNewInput();                    //Initial input line
        while(started) {                                    //Run until thread is interrupted
            try{
                if(scan.hasNextLine()) {                    //Got a new line from User?
                    line = scan.nextLine();                    //Get next line
                    String[] args = line.split(" ");         //Split string at each space char
                  
                    //If the logout timer is active we reset the timer here to avoid a logout
                    fw.system.getPasswordManager().getLogoutTimer().resetTimer();
                  
                    //Check if args length is larger then 0 (No empty input)
                    if(args.length > 0 && (!line.isEmpty())) {
                        proceedCommand(line, args[0].toLowerCase());
                    }else{
                        sendUnrecognizedCommand();
                    }      
                }
            }catch(IllegalStateException | NullPointerException e) {
                if(e instanceof IllegalStateException) {
                    if(!e.getLocalizedMessage().contains("Scanner closed")) {
                        e.printStackTrace();
                    }      
                }
            }
        }
    }
}, "User input Thread");
thread.start();

Mfg
 

KonradN

Super-Moderator
Mitarbeiter
Bei sowas ist mein Ratschlag, dass Du Dir immer erst in Worten überlegst, was Du denn machen willst.

Und das wäre in der Schleife doch:
So lange started gesetzt ist:
Wenn kein Passwort eingegeben werden muss und eine Eingabe vorhanden ist, dann hole die Eingabe und verarbeite diese.
==> Die Prüfung muss also in die while-Schleife selbst rein. Sobald Du dann also ein Flag setzt, dass ein Passwort eingegeben werden muss, dann prüfst Du den Scanner erst gar nicht.

Und noch etwas fällt auf: Deine while Schleife zieht 100% Last, da dort nichts gemacht wird, wenn keine Eingabe vorhanden ist. So eine Schleife sollte immer ein Thread.sleep enthalten um eben nicht unnötig CPU zu nutzen.
 

xJan45x

Aktives Mitglied
Bei sowas ist mein Ratschlag, dass Du Dir immer erst in Worten überlegst, was Du denn machen willst.

Und das wäre in der Schleife doch:
So lange started gesetzt ist:
Wenn kein Passwort eingegeben werden muss und eine Eingabe vorhanden ist, dann hole die Eingabe und verarbeite diese.
==> Die Prüfung muss also in die while-Schleife selbst rein. Sobald Du dann also ein Flag setzt, dass ein Passwort eingegeben werden muss, dann prüfst Du den Scanner erst gar nicht.

Und noch etwas fällt auf: Deine while Schleife zieht 100% Last, da dort nichts gemacht wird, wenn keine Eingabe vorhanden ist. So eine Schleife sollte immer ein Thread.sleep enthalten um eben nicht unnötig CPU zu nutzen.

Hallo Konrad,
Danke für deine Antwort.

Die while Schleife verbraucht keine 100% CPU Last aus dem einfachen Grund das die hasNextLine() Funktion vom Scanner eine Blocking Funktion ist das sagt auch die Beschreibung von hasNextLine:
Code:
Returns true if there is another line in the input of this scanner. This method may block while waiting for input.

Und hasNextLine blockiert so lange bis der Nutzer via Konsole eine neue Zeile eingibt.

Eine Anmeldung erfolgt ja nur beim Start der Anwendung und wenn der Nutzer abgemeldet ist(Ist das gleiche vom Zustand her wie Start der Anwendung) in beiden Fällen ist der "User Input Thread" nicht gestartet somit lässt sich mit readPassword() von der Console Klasse arbeiten.

Um das von dir genannte umzusetzen müsste ich ja eine Funktion vom Scanner haben die mir false/true zurück gibt ohne zu blockieren ob neue Daten vorliegen. Da wäre mir keine bekannt. Ich hatte mal versucht den InputStream mit zu verwenden worauf der Scanner läuft:

Code:
....
if(System.in.available() > 0) {
    if(scan.hasNextLine()) {
        String line = scan.nextLine();
        //...
    }
}else{
    Thread.sleep(100);
}

In dem Fall würde hasNextLine erst aufgeführt werden wenn der InputStream den der Scanner verwendet sagt das Daten verfügbar sind mit available() jedoch führt das unter Windows in der PowerShell dazu das man gar keine Eingabe mehr sieht was man in die Konsole eingibt. Warum auch immer.

Mfg
 

KonradN

Super-Moderator
Mitarbeiter
Und hasNextLine blockiert so lange bis der Nutzer via Konsole eine neue Zeile eingibt.
Sorry, das hatte ich dann schlicht falsch im Kopf. Ich dachte bei der Antwort tatsächlich, dass die Methode nicht blockieren würde. Sorry für diesen Denkfehler - damit ist meine Idee natürlich komplett für die Tonne.

Eine Idee, die bei sowas oft kommt, ist: Du kannst einem Thread ein interrupt senden. Das interessiert den Scanner aber nicht (Nach meinen Tests eben).

Ich hatte jetzt als eine Idee mal überlegt, dass ich den zugrunde liegenden Scanner oder Stream schließen könnte. Aber ich habe jetzt einmal kurz damit herum probiert und das hat leider nicht funktioniert. Ich würde daher empfehlen, dass Du ganz auf die Verwendung vom Scanner verzichtest.

Daher würde es auf die direkte Verwendung des InputStream hinaus laufen. Da wäre also dann die Prüfung von System.in.available() > 0
dann das lesen der vorhandenen Bytes in ein Array und Umwandlung in einen String.

Das könnte dann so aussehen:
Java:
    private static volatile boolean running = true;
    public static void main(String[] args) throws Exception {

        Thread inputThread = new Thread(() -> {
            while (running) {
                try {
                    int bytes;
                    if ((bytes = System.in.available()) > 0) {
                        String input = new String(System.in.readNBytes(bytes));
                        System.out.println("Got input: " + input);
                    }
                } catch (IOException ex) {
                    ex.printStackTrace();
                }
            }
            System.out.println("End of thread!");
        });

        inputThread.start();

        System.out.println("Das Hauptprogramm läuft weiter.");
        for (int i = 0; i < 5; i++) {
            try {
                Thread.sleep(5000);
                System.out.println("Hauptprogramm arbeitet: " + i);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        System.out.println("Abbruch!");
        running = false;
        inputThread.join();

    }

Der Code zeigt einfach, dass der inputThread nicht blockiert. Und wichtig: Da fehlt jetzt wirklich ein Thread.sleep!

Und ich habe mir das jetzt nicht näher angeschaut, aber evtl. macht es Sinn, sich eine Library wie jline anzusehen.
jline/jline3: JLine is a Java library for handling console input. (github.com)
Damit hast Du dann - so ich das richtig verstanden habe - eine deutlich bessere Kontrolle über die Eingabe und so.
 

KonradN

Super-Moderator
Mitarbeiter
Ach ja - dieser Vorschlag mit dem InputStream ist alles andere als optimal:
  • Bei meinen Tests war eine Eingabe "weg", wenn der andere Thread eine Ausgabe gemacht hat. Hier verstehe ich die Hintergründe gerade selbst nicht ganz. Einfach mal ausprobieren. Das War das Verhalten auf meinem Mac.
  • Das mit dem Lesen der verfügbaren Bytes ist ok, wenn es um Eingaben von der Tastatur geht. So eine Eingabe bis zum Return/Enter nicht zu groß ist, sollte immer die ganze Eingabe kommen. Problematisch wird es aber, wenn die Eingabe z.B. aus einer Datei kommen sollte. Dann bekommst Du eine bestimmte Menge Bytes und da hast Du zum einen am Ende nicht den Zeilenumbruch und du musst noch nicht einmal passende Zeichen haben. utf Zeichen können bis zu 4 Bytes lang sein, daher ist es denkbar, dass Du am Ende eines readNBytes die ersten 2 Byte eines Zeichen bekommst und der nächste Aufruf bringt erst die nächsten 2. Ein Zeichen kann also über zwei readNBytes Aufrufe aufgeteilt sein.

Daher wird es dann schnell darauf hinaus laufen, dass man da deutlich mehr baut:
  • Inhalte gehen in einen Cache um dann z.B. Zeilenweise Inhalte heraus zu nehmen.
  • Im idealen Fall schaut man, was das Encoding ist um dann die Bytes auszuwerten um sicher zu gehen, dass man da wirklich alles korrekt umwandelt.

Wenn man also ein wirkliches Produkt haben will, dann kommen da noch deutlich komplexere Dinge hinzu. Eine eigenes Tool für den Pi wird das vermutlich nicht interessieren - da wirst Du mit gewissen Schwächen eher leben können.
 

xJan45x

Aktives Mitglied
Also ich sitze schon etwas länger an diesem Problem (So gute zwei Wochen), hab es bisher halt immer hin und her geschoben und habe andere Teile einprogrammiert.

Ich habe eine Klasse geschrieben, hab sie mal angehangen, die sich InjectableInputStream nennt. Wie der Name schon vermuten lässt kann man dort in ein InputStream was rein "injizierten". Die Klasse hab ich mit dem Hintergrund geschrieben das ich ein \r\n an den User Input Thread schicke welche ja die Eingaben im Blocking Modus abarbeitet, um ihn zu entblocken und dann den Thread ordnungsgemäß zu beenden.

Dabei läuft im InjectableInputStream ein eigener Thread welcher mit Hilfe des Quell-InputStreams(System.in) die Daten via available() und read() non-blocking ausliest und an den PipedOutputStream schreibt. Der Scanner des User Input Thread ist wiederum an den PipedInputStream verbunden. So kann der Scanner ganz normal die Nutzereingaben verarbeiten und interrupted werden wärend der InjectableInputStream ohne Probleme auch interrupted werden kann weil available vor read aufgerufen wird und ebenfalls nie blockiert.

Das ganze funktioniert auch hervorragend. Allerdings mit dem bereits angesprochen Problem, welches das Codebeispiel von dir auch hat.

Ich nutze Eclipse, da Eclipse scheinbar immer noch Probleme mit der readPassword Funktion hat in der Internen Konsole(System.console() liefert null in Eclipse) muss ich zum testen des Programms die Windows PowerShell nehmen. Das Programm ist zwar für Linux konzipiert auf einem Raspberry PI 4B funktioniert aber unter Windows auch problemlos. Unter Linux funktioniert mein Vorhaben mit den InputStream available() problemlos.

Unter Windows in der PowerShell oder Eingabeaufforderung(cmd.exe) bekomme ich kein Echo mehr von den Zeichen die ich eingebe. Zum Beispiel wenn ich "help" in die PowerShell schreibe wird mir das nicht angezeigt(Also kein Lokales Echo) wenn ich es aber abschicke hab ich es wohl eingeben.

Kann und wird wahrscheinlich aber am Windows Terminal liegen, meine Vermutung ist das es möglicherweise mit den read() zusammen hängt. Denn wenn man nicht mit available() arbeitet sondern direkt mit read() (Blocking) kommt das was man Eintippt ganz normal. Ist aber kein Thema eigentlich für dieses Forum von daher bisschen Off-Topic. Ist halt nur doof für die Entwicklung ich lad das Programm ja nicht jedes mal auf den PI hoch um es zu testen.

Unter Linux (Verbindung via SSH) tritt dieses Problem nicht auf dort kann ich ganz normal alles eingeben und sehe auch was ich eingebe.

Dein Codebeispiel zeigt das gleiche Verhalten. In der Eclipse Konsole läuft alles wie erwartet startet man das Programm allerdings via cmd oder PowerShell ist es das gleiche Problem. Aber du schreibst ja das du ein Mac verwendest kannst ja mal testen ob das bei dir im Terminal? (So heißt das glaubig bei Mac OS) auch der Fall ist oder nicht.

Danke für den Tipp mit JLine. Schaue ich mir mal an. Dachte jetzt nur bei so simplen I/O Sachen (Konsoleneingabe) sollte das auch mit der Java API direkt gehen ohne externe Lib.

Mfg
 

Anhänge

  • InjectableInputStream.java
    3 KB · Aufrufe: 0
  • Eingabe unter Windows abgeschickt.png
    Eingabe unter Windows abgeschickt.png
    18,7 KB · Aufrufe: 0
  • Eingabe unter Windows.png
    Eingabe unter Windows.png
    15,9 KB · Aufrufe: 0
  • Eingabe unter Linux.png
    Eingabe unter Linux.png
    17,4 KB · Aufrufe: 0

KonradN

Super-Moderator
Mitarbeiter
Ach so, dann ist das Problem bei Dir, dass nach der Passworteingabe das Echo weiterhin ausgeschaltet ist?

Java ist bezüglich der Console wirklich stark limitiert. Daher wird es vermutlich wirklich am Besten sein, eine Library zu nutzen, die per JNI alles verfügbar macht. Musst dabei evtl. aufpassen, dass Deine gewünschten Plattformen alle unterstützt werden. So gesehen könnte diese jline Library tatsächlich interessant sein.
 

xJan45x

Aktives Mitglied
Also ja das ist dass Problem unter Windows bei mir jetzt Windows 10. Auf dem Raspberry hab ich keine Benutzeroberfläche installiert also dort kann ich nur via SSH drauf zugreifen. Dort funktioniert das Echo.

Bei Windows(In meinem Fall die PowerShell oder normale Eingabeaufforderung) kommt das Echo auch nicht selbst wenn ich kein readPassword() aufrufe. Allerdings scheint das wohl irgendwie mit dem read() vom InputStream zusammen zuhängen. Zumindest wenn man in einer while Schleife im Thread die read() Funktion direkt aufruft ohne vorherige Abfrage mit available() zu machen, werden die eingetippten Zeichen wiedergegeben. Nachteil ist dann der Thread ist blocking und lässt sich dann nicht wieder so einfach beenden.

Mit dem available() zuvor passiert genau das was ich beschreiben habe. Die eingetippten Zeichen erscheinen nicht.

An sich war die Anwendung damals wo ich angefangen habe sie zu erstellen so programmiert das wenn sie unter Windows ausgeführt wird sich selbst wieder beendet da sie nur für Linux vorgesehen war. Hab ich dann recht schnell wieder ausgenommen da zum Testen das doch unter Windows angenehmer ist als es jedes mal auf den Raspberry hochzuladen.

Ich werde mir mal die Tage die JLine Library anschauen, wenn das ne gute Alternative darstellen sollte werde ich darauf ausweichen sonst schreib ich die Anwendung erstmal so weit es geht zu Ende und fügt das wieder ein dann läuft die zwar unter Windows nicht korrekt mit dem fehlenden Echo aber unter Linux gehts dann ja.

Vielen Dank für deine Hilfe
Mfg und schönen Abend noch
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Scanner als Inputstream für Java Prozess Allgemeine Java-Themen 4
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
W Mal ein paar generelle Fragen zu InputStream und OutputStream Allgemeine Java-Themen 4
L Input/Output InputStream öffnen? Allgemeine Java-Themen 12
P Input/Output Inputstream verhält sich verschieden Allgemeine Java-Themen 9
R Inputstream lesen mit Pointer Allgemeine Java-Themen 0
M InputStream auslesen Allgemeine Java-Themen 1
M String aus InputStream Allgemeine Java-Themen 3
C Threading mit BufferedReader/InputStream & sockets Allgemeine Java-Themen 0
B BufferedWriter in InputStream oder Zeichen-Stream in Byte-Stream Allgemeine Java-Themen 5
E POI-InputStream selber wählen Allgemeine Java-Themen 2
S RandomAcessFile das einen InputStream wrappt..? Allgemeine Java-Themen 2
M Umwandlung ByteArrayOutputStream in InputStream Allgemeine Java-Themen 5
1 InputStream hängt Allgemeine Java-Themen 4
H Input/Output InputStream: 32-Bit-Ganzzahl (DWORD) binär lesen Allgemeine Java-Themen 5
D Datentypen Reader/InputStream wiederverwenden? Allgemeine Java-Themen 11
K Inputstream -> Bilder Allgemeine Java-Themen 23
1 InputStream liest die letzte Zeile nicht ein Allgemeine Java-Themen 2
J Java Datei aus FTP in ein INputstream Allgemeine Java-Themen 2
J InputStream Zip-File Allgemeine Java-Themen 3
F ImageIO cant create InputStream Allgemeine Java-Themen 9
S InputStream "weiterleiten" Allgemeine Java-Themen 12
T Integer aus InputStream lesen Allgemeine Java-Themen 3
T Undwandlung eines String in einen InputStream? Allgemeine Java-Themen 3
M Selbst geschriebener InputStreamReader über einen beliebigen InputStream Allgemeine Java-Themen 4
T OutputStream to InputStream Allgemeine Java-Themen 8
S von OutputStream in InputStream schreiben ohne das es blockiert..? Allgemeine Java-Themen 2
reibi BufferedImage nach InputStream Allgemeine Java-Themen 10
R InputStream zweimal lesen Allgemeine Java-Themen 2
G InputStream und File Allgemeine Java-Themen 11
B InputStream zu URL umwandeln Allgemeine Java-Themen 2
F Teile vom InputStream schreiben Allgemeine Java-Themen 9
J InputStream aus URL funktioniert nicht Allgemeine Java-Themen 7
H InputStream Problem mit externem Kommandozeilenprogramm Allgemeine Java-Themen 2
W InputStream öfters nutzen Allgemeine Java-Themen 9
R The mark method of InputStream does nothing. Allgemeine Java-Themen 4
V String oder doch InputStream? Allgemeine Java-Themen 9
A Inputstream in Outputstream umleiten Allgemeine Java-Themen 7
Nils_Langner InputStream soll sich bei neuen Daten melden Allgemeine Java-Themen 2
R InputStream - seltsamer Output Allgemeine Java-Themen 2
S java.io.InputStream.read(byte[] b) überschreiben Allgemeine Java-Themen 33
N InputStream erst ab gegebener Position Allgemeine Java-Themen 4
R InputStream Allgemeine Java-Themen 5
G InputStream kopieren? Allgemeine Java-Themen 6
D Inputstream aus StringBuffer Allgemeine Java-Themen 3
G inputstream() to imageicon() Allgemeine Java-Themen 7
D Durch OutpustStream und InputStream dateien in eine jar sch Allgemeine Java-Themen 3
G aus String einen InputStream erstellen Allgemeine Java-Themen 2
C Wie kann man im InputStream nach einer Zeichenkette suchen? Allgemeine Java-Themen 4
R Aus InputStream wieder eine Datei erzeugen? Allgemeine Java-Themen 2
N String als Inputstream Allgemeine Java-Themen 4
N Suchen in InputStream/ByteArrayOutputStream Allgemeine Java-Themen 11
M InputStream.read abbrechen Allgemeine Java-Themen 2
J Variablen Scanner als Klassenvariable Allgemeine Java-Themen 5
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
Bluedaishi Twain Scanner im Netzwerk Allgemeine Java-Themen 10
B Scanner erkennt keinen Text in Textdatei, obwohl welcher drinsteht Allgemeine Java-Themen 10
J Scanner oder BufferReader Allgemeine Java-Themen 2
1 Java Scanner Allgemeine Java-Themen 2
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
A Scanner Variable Klassenimtern deklarieren Allgemeine Java-Themen 12
T Datentypen Scanner Allgemeine Java-Themen 4
A Erste Schritte If Abfragen + Scanner Allgemeine Java-Themen 7
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
D Arraylist/For Schleife/Scanner Allgemeine Java-Themen 30
P Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht Allgemeine Java-Themen 1
S Erste Schritte Scanner in Methode einbauen Allgemeine Java-Themen 4
B QR Scanner WebCam Allgemeine Java-Themen 2
H Scanner: Ausgabe erst nach Abbruch Allgemeine Java-Themen 8
S Bekomme mit Scanner und URL keine Html-Seite ausgelesen Allgemeine Java-Themen 3
J NetBeans Frage bezüglich der Scanner-Klasse Allgemeine Java-Themen 6
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
Ark Locale, Formatter und Scanner: Bug bei Gleitkommazahlen? Allgemeine Java-Themen 2
X Scanner hört nach der 25. Zeile auf Allgemeine Java-Themen 6
A Split, Scanner, StringTokenizer oder PatternMatching für flexibles Dateieinlesen? Allgemeine Java-Themen 2
D java.util.InputMismatchException im Scanner -wieso? Allgemeine Java-Themen 5
K Scanner - große Textfile, nur 0 ab betim. Wert Allgemeine Java-Themen 4
D Scanner leer aber bufferedReader nicht?! Allgemeine Java-Themen 2
N Scanner läuft nicht durch Allgemeine Java-Themen 2
R Scanner mit Java Allgemeine Java-Themen 2
J Parser / Scanner / Tokenizer gesucht Allgemeine Java-Themen 3
J Problem mit Scanner-Stream Allgemeine Java-Themen 2
J Mit Scanner-Klasse eine Datei zeilenweise einlesen und nur bestimmte Zeichen abfragen Allgemeine Java-Themen 11
M Scanner-Methode: Mehrere Eingaben mit Exception behandeln Allgemeine Java-Themen 10
R Barcode Scanner mit JavaPos ansprechen Allgemeine Java-Themen 1
M Barcode-Scanner unterscheidung zur Tastertur Allgemeine Java-Themen 7
H Problem mit Scanner Klasse Allgemeine Java-Themen 7
E Wie Zeichen eingeben mit Klasse Scanner? Allgemeine Java-Themen 5
D Problem mit java.util.scanner: Falsche Ergebnisse Allgemeine Java-Themen 4
E Scanner Frage :) Allgemeine Java-Themen 8
A Unterschied Scanner und Matcher Allgemeine Java-Themen 5
S Problem mit Scanner Allgemeine Java-Themen 5
G Barcode (Strichcode)-Scanner Allgemeine Java-Themen 10
G Scanner.hasNext() beendet den Thread ohne Message Allgemeine Java-Themen 4
S Scanner Allgemeine Java-Themen 6
G Scanner-Generator zur Erkennung von Java Tokens Allgemeine Java-Themen 7
B Try/Catch in While-Schleife mit Scanner - Hilfe! Allgemeine Java-Themen 3
K Scanner.hasNext findet kein Ende Allgemeine Java-Themen 6
D ProcessBuilder und Scanner Probleme mit einigen Prozessen Allgemeine Java-Themen 2
S Die Methode close() der Klasse Scanner Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben