title: How to obscure Scanner input text?
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/10819469/hide-input-on-command-line">Hide input on command line</a>  </p>
  </blockquote>
  
  
  
  <p>I'm making a password security checker program and my question is odd in that my program runs just fine. What I'm wondering is whether there is any way of making text entered to the console appear as it would in a password field. i.e the word entered will appear as "****" BEFORE the user presses the return key.</p>
  
  <p>I am aware that <code>JFrame</code> has a <code>JPasswordField</code> method but I don't think that helps me when in just using <code>Scanner</code>.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>import java.util.Scanner;
  
  public class SecurityCheckerMain {
  
      static String enteredPassword;
  
      public static void main(String[] args) {
  
          Scanner input = new Scanner(System.in);
          System.out.println("Please enter your password: ");
          enteredPassword = input.nextLine();
          Checker tc = new Checker(enteredPassword);
          tc.checkSecurity();
  
      }
  
  }
  </code></pre>
  
  <p></p>
  
  <pre><code>public class Checker {
  
      //number of chars : the Higher the Better("password must be greater than 8 chars"){done}
      //combination of uppercase and lowercase{done}
      //contains numbers{done}
      //non repeated characters (every char is different ascii char){done}
      //is not a consecutive password ie 123456789 or 987654321{done}
      //is not blank ("[space]"){done} 
  
  
      int pLength;
      final int MAX_STRENGTH = 10;
      int pStrength = 0;
      String pass;
  
      public Checker(String pwd){
          pass = pwd;
          pLength = pwd.length();
  
      }
  
      public void checkSecurity(){
          if(pass.isEmpty()){
              System.out.println("Password Field is Empty! Password is Very Insecure.");
          }
          if(pLength &gt;= 8){
              pStrength++;
              if(pLength &gt;= 12){
                  pStrength++;
                  if(pLength &gt;= 16){
                      pStrength++;
                  }
              }
          }
          if(hasUpperCase(pass) &amp;&amp; hasLowerCase(pass)){
              pStrength+=2;
          }
          if(containsNumbers(pass)){
              pStrength+=2;
          }
          if(hasNoRepeats(pass)){
              pStrength+=2;
          }
          if(!containsConsecutiveNums(pass)){
              pStrength++;
          }
  
          System.out.println("Your password strength is rated at " + pStrength +"/" + MAX_STRENGTH);
  
      }
  
  
      //Component Methods
  
      public boolean hasUpperCase(String str){
          for(int i = 0; i&lt;pLength; i++){
              if(Character.isUpperCase(str.charAt(i))){
                  return true;
              }
          }
          return false;
  
      }
  
      public boolean hasLowerCase(String str){
          for(int i  = 0; i&lt;pLength; i++){
              if(Character.isUpperCase(str.charAt(i))){
                  return true;
              }
          }
          return false;
      }
  
      public boolean containsNumbers(String str){
          for(int i = 0; i&lt;pLength; i++){
              if(Character.isDigit(str.charAt(i))){
                  return true;
              }
          }
          return false;
      }
  
      public boolean hasNoRepeats(String str){
          for(int i = 0; i&lt;pLength; i++)
              if(containsChar(str, str.charAt(i))){
                  return false;
              }
          return true;
      }
  
  
      public boolean containsChar(String s, char search) {
          if (s.length() == 0)
              return false;
          else
              return s.charAt(0) == search || containsChar(s.substring(1), search);
      }
  
      public boolean containsConsecutiveNums(String str){
          for(int i = 0; i&lt;pLength; i++){
              if(Character.isDigit(str.charAt(i))){
                  if(str.charAt(i)-1 == str.charAt(i-1) || str.charAt(i)+1 == str.charAt(i+1)){
                      return true;
                  }
              }
          }
          return false;
      }
  }
  </code></pre>