Java黑皮书课后题第6章:**6.18(检测密码)一些网站对于密码具有一些规则。编写一个方法检测字符串是否是一个有效密码。编写一个程序,提示用户输入一个密码,如果符合规则,则显示…否则显示…

6.18(检测密码)一些网站对于密码具有一些规则。编写一个方法检测字符串是否是一个有效密码。编写一个程序,提示用户输入一个密码,如果符合规则,则显示…否则显示…

  • 题目
    • 题目描述
    • 破题
  • 代码
    • 运行示例

题目

题目描述

6.18(检测密码)一些网站对于密码具有一些规则。编写一个方法检测字符串是否是一个有效密码。
假定密码规则如下:
①密码必须至少8位字符
②仅能包含字母和数字
③密码必须包含至少两个数字
编写一个程序,提示用户输入一个密码,如果符合规则,则显示Valid Pasword,否则显示Invalid Password

破题

  1. 至少8位:字符串长度大于等于8
  2. 仅能包含字母和数字:字符串每位的ASCII码只能在如下三个区间:[48, 57]、[65, 90]、[97, 112]
  3. 必须至少包含两个数字:至少在[48, 57]区间出现两次
  4. 编写一个返回字符ASCII码的方法:public static int char_to_ASCII(char ch)
  5. 主方法则实现其他功能

代码

import java.util.Scanner;public class Test6_18 {public static void main(String[] args) {// 接收用户输入Scanner input = new Scanner(System.in);System.out.print("请输入一个密码:");String str = input.nextLine();// 1. 至少8位:字符串长度大于等于8int length = str.length();if (length < 8){System.out.println("Invalid Password");System.exit(1);}// 2. 转ASCIIboolean bool1 = true, bool2 = false;int count = 0;for (int i = 0 ;i < length;i++){int int_ASCII = char_to_ASCII(str.charAt(i));// 仅能包含字母和数字;[48, 57]、[65,  90]、[97, 122]if (int_ASCII < 48 || (int_ASCII > 57 && int_ASCII < 65) || (int_ASCII > 90 && int_ASCII < 97) || int_ASCII > 122){bool1 = false;break;}// 必须至少包含两个数字if (int_ASCII >= 48 && int_ASCII <= 57)count++;}if (count >= 2)bool2 = true;// 输出判断if (bool1 && bool2)System.out.println("Valid Password");elseSystem.out.println("Invalid Password");}public static int char_to_ASCII(char ch){return (int) (ch);}
}

运行示例

请输入一个密码:Invalid Password123
Invalid Password


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部