我一直在处理我的小项目,其中包含帐户名和帐户密码作为数组。
程序运行后,它会要求您输入您的用户名,然后输入密码,然后将其与其数据库匹配。如果正确:继续;如果不是:显示登录失败。
我想要的是当用户输入密码而不是将密码显示为1234
时我希望将其显示为****
。
{
Scanner in = new Scanner(System.in);
public int UserNameAndPassword(){
System.out.println("Pleass Enter your username:");
String user =in.nextLine();
System.out.println("Pleass Enter your Password:");
String pin = in.nextLine();
int p= FindNameAndPassword(user,pin);
return p;
}
主要
public static void main(String[] args) {
HelpingMethodes h =new HelpingMethodes();
Scanner in =new Scanner(System.in);
while(true)
{
int position,choise;
position = h.UserNameAndPassword();
boolean login = true;
while(position==-1)
{
System.out.println("You entered wrong Username or Password");
System.out.print("Pleas try again\n");
position=h.UserNameAndPassword()
}
在Java中有没有简单的方法来实现它?
答案 0 :(得分:4)
考虑Console.readPassword。虽然它不会用 * 掩盖密码,但它可以隐藏输入的文本。快速代码快照:
char[] password = System.console().readPassword("Password: ");
System.out.println("Password is: "+ password);
注意:您必须通过命令行运行程序。如果您通过IDE运行它,您将在Console对象上获得 null 。
您会找到详细的教程here。
如果您希望不使用控制台,则必须实施替代解决方案。你必须编写一个线程来覆盖收到的输入,这不是一项简单的任务。据我所知,Scanner没有内置的屏蔽方法。
答案 1 :(得分:0)
尝试使用:http://docs.oracle.com/javase/6/docs/api/java/io/Console.html#readPassword()代替扫描程序。
此外,这称为密码屏蔽,而不是散列,仅供参考。