Java黑皮书课后题第6章:**6.18(检测密码)一些网站对于密码具有一些规则。编写一个方法检测字符串是否是一个有效密码。编写一个程序,提示用户输入一个密码,如果符合规则,则显示…否则显示…
6.18(检测密码)一些网站对于密码具有一些规则。编写一个方法检测字符串是否是一个有效密码。编写一个程序,提示用户输入一个密码,如果符合规则,则显示…否则显示…
- 题目
- 题目描述
- 破题
- 代码
- 运行示例
题目
题目描述
6.18(检测密码)一些网站对于密码具有一些规则。编写一个方法检测字符串是否是一个有效密码。
假定密码规则如下:
①密码必须至少8位字符
②仅能包含字母和数字
③密码必须包含至少两个数字
编写一个程序,提示用户输入一个密码,如果符合规则,则显示Valid Pasword,否则显示Invalid Password
破题
- 至少8位:字符串长度大于等于8
- 仅能包含字母和数字:字符串每位的ASCII码只能在如下三个区间:[48, 57]、[65, 90]、[97, 112]
- 必须至少包含两个数字:至少在[48, 57]区间出现两次
- 编写一个返回字符ASCII码的方法:public static int char_to_ASCII(char ch)
- 主方法则实现其他功能
代码
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
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
