IDE输出与命令行不同

时间:2014-12-01 18:12:18

标签: java command-line ide output

我编写了一个程序来屏蔽用户在命令行输入的输入。 详细地: 当我的程序启动时,我运行一个新的线程,通过System.out.print(" \ 010 *")每毫秒打印一个星号。 同时我的main方法通过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;
   }
}

1 个答案:

答案 0 :(得分:1)

因为Eclipse控制台无法显示退格符(\ b或\ 010), 因为bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=76936

cmd可以显示它,这就是您的程序在cmd中按预期工作的原因。

然而,根据错误报告,修复程序将在Eclipse 4.5 M4中提供。