以ATM为例:实现一个功能,用户输入的密码和账号正确才能登录,进入操作界面(只有3次机会),然后根据用户的输入实现对应的功能,输入其他的就提示 输入错误,请重新输入。
run方法里面需要判断login方法是true还是false;
public void run(){
System.out.println("欢迎使用ATM!");
Scanner scanner = new Scanner(System.in);
//判断登录
boolean flag = login();//login 的返回类型也要是布尔类型
if (flag) {
/* 以下的while循环,目的是:让用户可以多次操作主菜单 */
while (true) {
// 显示主菜单 这里写只有是true 就执行的方法;
showMenu();
int in = valInputIsCorrect(scanner);
// 根据用户的输入,执行对应的功能
switch (in) {
case 1:// 查询余额
checkMoney();
break;
case 2:// 转账
System.out.println("功能未开放,请到柜台办理相关业务!");
break;
case 3:// 取钱
getMoney();
break;
case 4:// 存钱
saveMoney();
break;
case 5:// 退卡
System.out.println("欢迎下次再来!");
return;
}
}
}
}
login方法 里面包含validateAccount 方法,需要他返回一个boolean类型,返回的是true 或者 false,返回是true 的时候执行一段代码,是false又执行的另外的代码或者结束。
/**
* @功能 实现用户的登录认证
* @return
*/
private boolean login() {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
for (int i = 1; i <= 3; i++) {
// 通过用户的输入,得到用户的账号
System.out.println("请输入账号:");
String account = scanner.next();
// 通过用户的输入,得到用户的密码
System.out.println("请输入密码:");
String password = scanner.next();
boolean flag = validateAccount(account, password);
if (flag) {
return true;
}
if (i == 3) {
break;
}
System.out.println("账号密码有误,你还有" + (3 - i) + "机会!");
}
return false;
}
valInputIsCorrect 方法 登录进去之后需要对用户的输入进行判断,如果正常输入会进行声明操作,如果输入错误,又需要弹出什么内容。
这里的输入类型为int ,需要把用户的输入作为参数传入,并对其判断,如果输入错误,请用户进行重新输入。
/**
* @功能 该循环用于验证用户的输入选项是否正确
* @param scanner
* @return
*/
private int valInputIsCorrect(Scanner scanner) {
// TODO Auto-generated method stub
int in = 0;
while (true) {
// 获取用户的输入
in = scanner.nextInt();
if (in > 0 && in <= 5) {
break;
} else {
System.out.println("输入有误,请重新输入:");
}
}
return in;
}
validateAccount(有效账户) 方法, 在login里面,用与验证登录的用户是否有效。这个方法返回的类型是true 或者false,
private boolean validateAccount(String account, String password) {
for (User user : users) {
if (account.equals(user.account) && password.equals(user.password)) {
this.user = user;
return true;
}
}
return false;
}