在你的代码中添加命令行参数来读取用户名,可以通过 main 方法的参数 String[] args 来实现。这样,程序在启动时可以通过命令行传递用户名,而不需要用户手动输入。以下是修改后的代码示例:
修改后的代码
java
复制代码
import java.util.HashMap;
import java.util.Scanner;
public class ConsoleLoginSystemWithCommandLine {
private static HashMap<, String> userDatabase = new HashMap<>();
static {
userDatabase.put("admin", "123456");
展开剩余86%userDatabase.put("user1", "password");
userDatabase.put("user2", "mypassword");
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 检查是否通过命令行参数提供了用户名
String usernameFromArgs = null;
if (args.length > 0) {
usernameFromArgs = args[0]; // 获取第一个命令行参数作为用户名
}
String username;
if (usernameFromArgs != null) {
System.out.println("通过命令行参数提供的用户名: " + usernameFromArgs);
username = usernameFromArgs;
} else {
// 如果没有提供命令行参数,则提示用户手动输入用户名
System.out.print("请输入用户名: ");
username = scanner.nextLine();
}
// 提示用户输入密码
System.out.print("请输入密码: ");
String password = scanner.nextLine();
// 验证用户信息
if (authenticate(username, password)) {
System.out.println("登录成功!欢迎 " + username + "!");
} else {
System.out.println("登录失败!用户名或密码错误。");
}
// 关闭扫描器
scanner.close();
}
private static boolean authenticate(String username, String password) {
return userDatabase.containsKey(username) && userDatabase.get(username).equals(password);
}
}
代码说明
命令行参数:
args 是 main 方法的参数,用于接收命令行传递的参数。
检查 args 的长度,如果长度大于 0,则使用第一个参数作为用户名。
优先使用命令行参数:
如果通过命令行参数提供了用户名,则直接使用该用户名,而不再提示用户输入。
如果没有提供命令行参数,则回退到手动输入模式。
运行方式:
手动输入模式:
复制代码
java ConsoleLoginSystemWithCommandLine
直接运行程序,通过控制台输入用户名和密码。
命令行模式:
复制代码
java ConsoleLoginSystemWithCommandLine admin
在命令行中提供用户名(如 admin),程序会直接使用该用户名进行验证。
示例运行
示例 1:手动输入用户名
复制代码
java ConsoleLoginSystemWithCommandLine
运行程序后,程序会提示输入密码:
复制代码
欢迎登录系统!
请输入密码:
123456
登录成功!欢迎 admin!
示例 2:通过命令行提供用户名
复制代码
java ConsoleLoginSystemWithCommandLine admin
运行程序后,程序会直接使用 admin 作为用户名:
复制代码
欢迎登录系统!
通过命令行参数提供的用户名: admin
请输入密码:
123456
登录成功!欢迎 admin!
注意事项
命令行参数的传递:
在运行程序时,需要在命令行中传递用户名。例如:
复制代码
java ConsoleLoginSystemWithCommandLine admin
如果不传递参数,程序会提示用户手动输入用户名。
安全性:
命令行参数可能会被其他用户通过进程查看工具看到,因此不建议在生产环境中通过命令行传递敏感信息(如密码)。
希望这个修改能够满足你的需求!如果有其他问题,欢迎继续提问。
发布于:内蒙古自治区