簡體   English   中英

IDE輸出與命令行不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM