今天的小练手,难度在于用对象类型的数组的合理引用,以及登录时的逻辑判断。(循环和3次登录锁定)
代码要求:
出现问题:
- login出现逻辑错误,登录失败打印出来好多遍。
- Account类里面有参构造函数没有传值(this.balance = balance)。
- 程序不能返回重新选择功能。
- 程序无法正常终止。
错误login代码:
private static boolean login() {
// 输入一共有三次机会
/*
* String username = "zhangsan"; 字符串的比对使用equals方法进行比对
* username.equals("zhangsan") -- true username.equals("zhangsa") -- false
*
* 一共有三次机会
*
* 1.返回一个boolean的参数,代表着登录成功还是失败 2.如果登录成功了,则把比对成功的用户对象使用成员变量account来保存,方便以后的操作
*/
// 定义一个循环,最多执行三次
for (int i = 1; i <= 3; i++) {
// 接收从控制台输入的用户名、密码
System.out.println("请输入账号:");
String username = scanner.next();
System.out.println("请输入密码:");
String password = scanner.next();
// 与accounts数组中的对象进行匹配
for (int j = 0; j < accounts.length; j++) {
// 取出当前对象
Account a = accounts[j];
// 拿到用户的用户名、密码
String un = a.getUsername();
String pw = a.getPassword();
// 比对用户名、密码是否正确
if (username.equals(un) && password.equals(pw)) {
System.out.println("登录成功!");
// 将比对成功的对象保存一下,方便进行取款、存款操作
account = a;
// 条件满足则直接返回true
return true;
} else {
// 判断一下当前是第三次机会
if (i == 3) {
System.out.println("连续三次输入失败,程序退出!");
return false;
}
System.out.println("用户名/密码输入失败,请重新输入!还剩余"