[英]How to make input field of password turn into asterisk?
当用户输入密码时,我正在尝试使输入字段变为 *****。 但是在这里我遇到了 2 个错误,如下所示。 我该如何解决这个问题。 有人可以帮助修改此代码,使其正常工作。 谢谢你。
//package com.company;
import java.util.Scanner;
import java.io.Console;
public class Main {
static void myPassword(){
String Username = "wisdom";
String Password = "123";
boolean granted = false;
for(int i = 0; i < 3; i++) {
Scanner input1 = new Scanner(System.in);
Console console = System.console();
char[] password = console.readPassword("Enter password");
Arrays.fill(password, '*');
String username = input1.next();
Scanner input2 = new Scanner(System.in);
System.out.println("Enter Password : ");
String password = input2.next();
if (username.equals(Username) && password.equals(Password)) {
granted = true;
break;
}
else if (username.equals(Username)) {
System.out.println("Invalid Password!");
} else if (password.equals(Password)) {
System.out.println("Invalid Username!");
} else {
System.out.println("Invalid Username & Password!");
}
}
if(granted)
System.out.println("Access Granted! Welcome!");
else
System.out.println("Access Denied! You have reached the maximum number of attempts");
System.exit(0);
}
public static void main(String[] args) {
myPassword();
}
}
第一个错误:需要先导入Arrays
才能使用:
import java.util.Arrays;
第二个错误:您已经在这里初始化了password
变量:
char[] password = console.readPassword("Enter password");
选择另一个变量名来代替:
String password = input2.next();
我认为这里的错误是不言自明的。
对于第一个错误: Arrays.fill(password, '*');
,缺少以下导入语句。
import java.util.Arrays;
对于第二个错误: String password = input2.next();
, 变量密码已经定义在char[] password = console.readPassword("Enter password");
. 只需在此处使用不同的变量名称。
也许您可以通过答案来理解为什么会出现错误。 因此我建议了我的源代码
import java.util.Scanner;
import java.io.Console;
public class Main {
static void myPassword(){
String username = "wisdom";
String password = "123";
boolean granted = false;
Console console = System.console();
Scanner scanner = new Scanner(System.in);
for(int i = 0; i < 3; i++) {
System.out.println("Enter username : ");
// i suggested variable should distinguished by name
String inputUsername = scanner.next();
char[] passwordChar = console.readPassword("Enter password");
// this need import java.util.Arrays;
// and if use this element of passwordChar[] changed *
//Arrays.fill(passwordChar, '*');
String inputPassword = new String(passwordChar);
if (username.equals(inputUsername) && password.equals(inputPassword)) {
granted = true;
break;
}
else if (username.equals(inputUsername)) {
System.out.println("Invalid Password!");
} else if (password.equals(inputPassword)) {
System.out.println("Invalid Username!");
} else {
System.out.println("Invalid Username & Password!");
}
}
//If you don't need to use scanner
//You had better close scanner
scanner.close();
if(granted)
System.out.println("Access Granted! Welcome!");
else
System.out.println("Access Denied! You have reached the maximum number of attempts");
System.exit(0);
}
public static void main(String[] args) {
myPassword();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.