编写一个 UserLogin 类,在类中编写一个静态方法 generateCheckCode,其功 能是生成指定位数的检验码,方式声明如下。在 main 方法中,输入用户名、密 码、验证码,完成用户身份的验证,用户名和密码默认分别为 admin 和 123456。 登录成功后显示用户名,显示规则是除第一个字符和最后一个字符原样显示外, 其余字符显示为*;失败则给出相应的提示。 静态方法 generateCheckCode 声明: //随机生成 n 位的校验码,校验码为大小写字母、数字的任意组合
时间: 2024-02-09 12:09:26 浏览: 197
好的,我明白了。以下是符合你要求的 Java 代码:
```
import java.util.Random;
import java.util.Scanner;
public class UserLogin {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String username, password, checkCode, generatedCode;
System.out.print("请输入用户名:");
username = scanner.next();
System.out.print("请输入密码:");
password = scanner.next();
System.out.print("请输入验证码:");
checkCode = scanner.next();
generatedCode = generateCheckCode(4); // 生成 4 位校验码
if (username.equals("admin") && password.equals("123456") && checkCode.equalsIgnoreCase(generatedCode)) {
// 登录成功
System.out.println("欢迎," + username);
String maskedUsername = maskString(username);
System.out.println("用户名:" + maskedUsername);
} else {
// 登录失败
System.out.println("登录失败,请检查用户名、密码和验证码是否正确。");
}
}
public static String generateCheckCode(int n) {
StringBuilder sb = new StringBuilder();
Random random = new Random();
String pattern = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (int i = 0; i < n; i++) {
int index = random.nextInt(pattern.length());
sb.append(pattern.charAt(index));
}
return sb.toString();
}
public static String maskString(String s) {
if (s == null || s.length() < 3) {
return s;
}
char[] chars = s.toCharArray();
for (int i = 1; i < chars.length - 1; i++) {
chars[i] = '*';
}
return new String(chars);
}
}
```
这个程序要求用户输入用户名、密码和验证码,然后进行身份验证。其中,验证码是由 `generateCheckCode` 方法生成的,校验码为大小写字母、数字的任意组合。如果登录成功,程序会输出欢迎信息和用户名,其中用户名除第一个字符和最后一个字符原样显示外,其余字符显示为星号;如果登录失败,程序会提示用户检查输入是否正确。
阅读全文