黑马程序员技术交流社区

标题: 分享我做的 java测试题 - 录入密码并判断次数 [打印本页]

作者: 一枚小小媛    时间: 2015-7-29 23:06
标题: 分享我做的 java测试题 - 录入密码并判断次数
  1. package Demo;

  2. import java.util.Scanner;

  3. /**
  4. * @author 小媛<br>
  5. *         需求: <br>
  6. *         ①模拟客户端登陆<br>
  7. *         ②通过控制台录入用户密码,校验正确,则提示登陆成功; 否则提示错误<br>
  8. *         ③5次输错密码,则锁定<br>
  9. *
  10. *         思路:<br>
  11. *         ①本地保存密码 使用String(可模拟数据)<br>
  12. *         ②用户输入密码,使用控制台的Scanner<br>
  13. *         ③计数器思想 标识错误次数<br>
  14. *         ④密码输入正确 / 或者连续5次输错密码 结束程序
  15. */
  16. public class Demo1 {
  17.         public static void main(String[] args) {

  18.                 int count = 0;// 计数器 标识错误的次数

  19.                 String password = "1234567890";// 模拟用户的密码

  20.                 boolean status = false;// 锁

  21.                 while (!status) {

  22.                         String currentPassWord = getInputPasswrod();

  23.                         if (currentPassWord.equals(password)) {
  24.                                 System.out.println("登陆成功");
  25.                                 status = true;

  26.                         } else {
  27.                                 if (count < 5) {
  28.                                         System.out.println("密码错误,请重新输入");
  29.                                 } else {
  30.                                         status = true;
  31.                                         System.out.println("系统检查到密码登陆次数过多,自动锁定。请24小时后重试");
  32.                                 }
  33.                                 count++;
  34.                         }
  35.                 }

  36.                 System.exit(0);
  37.         }

  38.         private static String getInputPasswrod() {
  39.                 Scanner scanner = new Scanner(System.in);
  40.                 System.out.println("请输入密码,按回车键登陆");
  41.                 String str = scanner.next();
  42.                 return str;
  43.         }

  44. }
复制代码


【小媛总结】
这里很可能有朋友会问,为什么用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