当前位置: 首页 > 知识库问答 >
问题:

如何在Java中显示输入的星号?[副本]

包沈义
2023-03-14

我需要在Java写一个小程序,要求一个人输入一个Pin码。所以我需要用星号(*)而不是数字隐藏Pin。我怎么能那样做?

到目前为止,这是我的代码:

import java.util.Scanner;
import java.io.*;


public class codePin {

    public static void main(String[] args){

        int pinSize = 0;

        do{
            Scanner pin = new Scanner(System.in);
            System.out.println("Enter Pin: ");
            int str = pin.nextInt();
            String s = new Integer(str).toString();

            pinSize = s.length();

            if(pinSize != 4){
            System.out.println("Your pin must be 4 integers");
            } else {
            System.out.println("We're checking if Pin was right...");
            }

        }while(pinSize != 4);
    }
}

实际上这个程序现在起作用,但我想增加一个功能,显示像“***”或“**”等的Pin。(当人员进入时,控制台中是自己的Pin)。我找到了可以完全隐藏别针的东西,但我不想这样。我要带星号的别针

有什么想法吗?谢谢

共有1个答案

赖俊
2023-03-14

类似这样的事情:

import java.io.*;

public class Test {
    public static void main(final String[] args) {
        String password = PasswordField.readPassword("Enter password:");
        System.out.println("Password entered was:" + password);
    }
}


class PasswordField {

   public static String readPassword (String prompt) {
      EraserThread et = new EraserThread(prompt);
      Thread mask = new Thread(et);
      mask.start();

      BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
      String password = "";

      try {
          password = in.readLine();
      } catch (IOException ioe) {
          ioe.printStackTrace();
      }
      et.stopMasking();
      return password;
   }
}   

class EraserThread implements Runnable {
   private boolean stop;

   public EraserThread(String prompt) {
       System.out.print(prompt);
   }

   public void run () {
      while (!stop){
         System.out.print("\010*");
         try {
            Thread.currentThread().sleep(1);
         } catch(InterruptedException ie) {
            ie.printStackTrace();
         }
      }
   }

   public void stopMasking() {
      this.stop = true;
   }
}
 类似资料:
  • 本文向大家介绍shell脚本实现输入密码显示星号,包括了shell脚本实现输入密码显示星号的使用技巧和注意事项,需要的朋友参考一下 补充:Shell输入密码时关闭屏幕回显  stty -echo read -p “请输入使用者密码: ” PASS stty echo 这样在输入密码的时候就不会显示了 如果大家感觉以上介绍的不够细致,大家可以参考下这篇文章: Shell脚本中实现把输入的密码转换为*

  • 本文向大家介绍C#实现在控制台输入密码显示星号的方法,包括了C#实现在控制台输入密码显示星号的方法的使用技巧和注意事项,需要的朋友参考一下 在控制台输入的内容C#默认按照字符串进行处理,如果直接让用户一次输入完毕就很难实现 显示星号的功能。但是如果让用户一次只能输入一个字符就,在将用户输入的字符替换为星号就可以实现了! 首先,C#中能让用户按下一个按键的方法就是Console.Readkey(),

  • 本文向大家介绍linux sudo密码输入时显示星号的操作方法,包括了linux sudo密码输入时显示星号的操作方法的使用技巧和注意事项,需要的朋友参考一下 大家都知道我们在输入linux sudo密码的时候终端是不显示任何东西的,虽然这样安全,但是我们不知道我们按下的密码到底输入进去了没有,如果可以像在网站上登录账号密码的时候显示星号多好。 操作 其实要实现这个很简单,首先编辑sudo的配置文

  • 下面的代码从用户输入一个整数(n),并输出n的素数分解。我需要有以下输出(作为一个例子),但达不到: 输入: 输出: 实际错误的输出(它有一个额外的“*”)是: 也许还有另外一种使用函数的解决方案,我不知道。

  • 当使用g.drawstring命令时,如何在Java中将1显示为01?我已经尝试过了,但不知道应该使用什么术语。

  • 我希望看到输出正在打印(而不是在测试结束后)。 我在用Pycharm。在命令行中,我应该添加参数。