2014-12-01 8 views
0

Я написал программу для маскировки ввода, который пользователь вводит в командной строке. Подробнее: Когда моя программа запускается, я запускаю новый поток, который выводит звездочку каждые миллисекунды через System.out.print ("\ 010 *"). Между тем мой основной метод читается на входе пользователя через read.nextLine().Выход IDE отличается от командной строки

Когда я запускаю эту программу в затмении, выход представляет собой переполнение звездочек (что и следовало ожидать). Однако, когда я запускаю эту программу с моего терминала, я вижу только звездочку, когда я ввожу символ.

Почему это? Я прочитал несколько других статей, в которых говорится, что процессор выделяет 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; 
    } 
} 
+0

Какие IDE вы используете? В какой операционной системе? Я просто скомпилировал ваш код с помощью Eclipse под окнами, а после замедления задержки до 100 мс и удаления «\ 010» он отлично работает как в среде IDE, так и в командной строке DOS. – Greycon

ответ

1

Поскольку консоль Eclipse, не может отображать возврат каретки (\ Ь или \ 010), из-за ошибки https://bugs.eclipse.org/bugs/show_bug.cgi?id=76936

ЦМД может отобразите его, поэтому ваша программа работает так, как ожидалось, в cmd.

Однако исправление будет доступно в Eclipse 4.5 M4, согласно отчету об ошибке.