[英]IDE output different from command line
我編寫了一個程序來掩蓋用戶在命令行中輸入的輸入。 詳細信息:當程序啟動時,我運行一個新線程,該線程每隔毫秒通過System.out.print(“ \\ 010 *”)打印一個星號。 同時,我的主要方法通過read.nextLine()讀取用戶輸入。
當我在eclipse中運行該程序時,輸出是一個星號溢出(這是我期望的)。 但是,當我從終端運行該程序時,只要鍵入一個字符,我只會看到一個星號出現。
為什么是這樣? 我讀過其他一些文章,說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;
}
}
由於Eclipse https://bugs.eclipse.org/bugs/show_bug.cgi?id=76936,Eclipse控制台無法顯示退格字符(\\ b或\\ 010)
該cmd可以顯示它,這就是為什么您的程序可以按預期在cmd中運行的原因。
根據錯誤報告,該修復程序將在Eclipse 4.5 M4中可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.