0
我編寫了一個程序來屏蔽用戶在命令行中輸入的輸入。 詳細信息: 當我的程序啓動時,我運行一個新線程,通過System.out.print(「\ 010 *」)每毫秒打印一個星號。 同時我的主要方法通過read.nextLine()讀入用戶輸入。當我在eclipse中運行這個程序時,輸出是星號溢出(這是我所期望的)。 但是,當我從終端運行此程序時,只有在鍵入字符時纔會看到星號。IDE輸出與命令行不同
這是爲什麼?我閱讀了一些其他文章,說CPU如何將6-10%的內存分配給命令行,而典型的IDE獲得了兩倍以上的內存。
我的代碼如下所示僅供參考:
import java.util.Scanner;
public class Main {
public static void main(String [] args){
PasswordMasker passwordMasker = new PasswordMasker();
passwordMasker.start();
Scanner scan = new Scanner(System.in);
String password = scan.nextLine();
passwordMasker.stopMasking();
System.out.println("The password is: " + password);
}
}
public class PasswordMasker extends Thread {
private boolean maskInProgress = true;
public void run(){
mask();
}
private void mask() {
while(maskInProgress){
try {
Thread.sleep(1);
System.out.print("\010*");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("Masking stopped");
}
public void stopMasking(){
this.maskInProgress = false;
}
}
你在用什麼IDE?在什麼操作系統上?我剛剛在Windows下使用Eclipse編譯了代碼,並且在延遲到100ms後減緩延遲並刪除「\ 010」,它在IDE和DOS命令提示符下均可正常工作。 – Greycon 2014-12-01 18:33:15