Warum druckt meine Konsole nicht sofort die vorherige Zeile, wenn ich einen Java-Scanner verwende?Java

Java-Forum
Guest
 Warum druckt meine Konsole nicht sofort die vorherige Zeile, wenn ich einen Java-Scanner verwende?

Post by Guest »

Ich habe das folgende einfache Java-Programm, das nach einem Benutzernamen (über den Scanner) und einem Passwort (über die Konsole) fragt. Beachten Sie, dass ich dies NICHT in einer IDE wie Eclipse ausführe, sodass dieser Fehler nicht auf meine Situation zutrifft (insbesondere, wenn ich dies auf Powershell ausführe). Wir können immer davon ausgehen, dass eine Konsole existiert.

Code: Select all

import java.io.Console;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Console console = System.console();

System.out.print("User: ");
String user = sc.nextLine();
System.out.println("\r\n");
System.out.println("User entered was: " + user); //POINT 1

String password = new String(console.readPassword("Enter password: "));
System.out.println("\r\n");
System.out.println("Password entered: " + password); //POINT 2
}
}
Hier ist, was ich versucht habe/was erwartet wurde:
Wenn ich das Programm ausführe, werde ich mit
[Benutzer:]< aufgefordert br />wie erwartet. Wenn ich jedoch die EINGABETASTE auf meiner Tastatur drücke, wird der Cursor an den Zeilenanfang gesetzt und geht NICHT zu „PUNKT 1“. Wenn ich erneut die Eingabetaste drücke, fahren wir mit „PUNKT 1“ fort und zeigen den Benutzer wie erwartet an.

Bei laufendem Programm sieht die Konsole so aus:

Code: Select all

[PS C:\..\Password] > java -cp "myBin" Main
User: foo|[ java -cp "myBin" Main
|[ java -cp "myBin" Main
User: foo

User entered was: foo
Enter password: |[ java -cp "myBin" Main
User: foo

User entered was: foo
Enter password: 

Password entered: bar
[PS C:\..\Password] > |[

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post