黑马程序员技术交流社区
标题:
分享我做的 java测试题 - 录入密码并判断次数
[打印本页]
作者:
一枚小小媛
时间:
2015-7-29 23:06
标题:
分享我做的 java测试题 - 录入密码并判断次数
package Demo;
import java.util.Scanner;
/**
* @author 小媛<br>
* 需求: <br>
* ①模拟客户端登陆<br>
* ②通过控制台录入用户密码,校验正确,则提示登陆成功; 否则提示错误<br>
* ③5次输错密码,则锁定<br>
*
* 思路:<br>
* ①本地保存密码 使用String(可模拟数据)<br>
* ②用户输入密码,使用控制台的Scanner<br>
* ③计数器思想 标识错误次数<br>
* ④密码输入正确 / 或者连续5次输错密码 结束程序
*/
public class Demo1 {
public static void main(String[] args) {
int count = 0;// 计数器 标识错误的次数
String password = "1234567890";// 模拟用户的密码
boolean status = false;// 锁
while (!status) {
String currentPassWord = getInputPasswrod();
if (currentPassWord.equals(password)) {
System.out.println("登陆成功");
status = true;
} else {
if (count < 5) {
System.out.println("密码错误,请重新输入");
} else {
status = true;
System.out.println("系统检查到密码登陆次数过多,自动锁定。请24小时后重试");
}
count++;
}
}
System.exit(0);
}
private static String getInputPasswrod() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入密码,按回车键登陆");
String str = scanner.next();
return str;
}
}
复制代码
【小媛总结】
这里很可能有朋友会问,为什么用status锁,为什么用while
答:①status是为了更贴切的符合“面向对象的思想”,作为标识循环的是否开启与结束;当然,闲麻烦也可以直接用true,然后注释status
②while更符合语境。在没有预知用户哪一次输入正确密码,和到底是什么时候输错了5次,导致循环结束。所以用while 要比for更符合生活实际。
作者:
Matrix_heima
时间:
2015-7-30 00:38
谢谢分享
作者:
一枚小小媛
时间:
2015-7-30 09:18
类似这种题型的题目还有很多。
比如 抽取扑克牌、猜猜中奖号码,第几次结束游戏什么的。这些都是大同小异的思路。
逐一分析,用编程的思想去理解就很快了。
作者:
一枚小小媛
时间:
2015-7-30 22:30
还有一个细节是:
下面两句代码的顺序问题。一定要注意,不然控制台录入的时候 输入的东西 和 System提示的字 相别扭
Scanner scanner = new Scanner(System.in);
System.out.println("请输入密码,按回车键登陆");
作者:
392225327
时间:
2015-7-30 22:36
大神
作者:
bgxpf
时间:
2015-7-30 23:19
好厉害的样子
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2