本文主要是介绍sdut lava lab7.5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
7-5 sdut-JAVA-Valid Password
分数 9
全屏浏览
切换布局
作者 马新娟
单位 山东理工大学
You have been requested to write a method that will be used when a user wishes to change his/her password. Your method should accept a String object and report whether or not this input constitutes a valid password. The rules for a valid password are as follows:
• between 6 to 10 characters in length
• must contain at least one digit, at least one uppercase alphabetic character (in accordance with the English alphabet), at least one lowercase alphabetic character (in accordance with the English alphabet) and at least one other non-space character (that is not a digit or alphabetic character in accordance with the English alphabet)
• no spaces
Input Specification:
Accept a String object .
Output Specification:
Report whether or not this input constitutes a valid password.
Sample Input:
Maggie26
Sample Output:
Password is invalid.
MAggie&26
Sample Output:
Password is valid.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);String arr =sc.nextLine();if(arr.length()<6||arr.length()>10){System.out.println("Password is invalid.");System.exit(0);}for(int i = 0 ; i < arr.length() ; i++){if(arr.charAt(i) == ' '){System.out.println("Password is invalid.");System.exit(0);}}int min = 0;int max = 0;int di = 0;int fu = 0;for(int i = 0 ;i <arr.length();i++){if(arr.charAt(i)>='0'&&arr.charAt(i)<='9'){di+=1;}else if(arr.charAt(i)>='A'&&arr.charAt(i)<='Z'){max+=1;}else if(arr.charAt(i)>='a'&&arr.charAt(i)<='z'){min+=1;}else{fu += 1;}}if(min>=1&&max>=1&&di>=1&&fu>=1){System.out.println("Password is valid.");}else{System.out.println("Password is invalid.");}}
}
Java代码的目的是验证用户输入的字符串(密码)是否符合一定的规则。以下是对每一行代码的解释:
import java.util.Scanner;
导入Java的Scanner
类,用于读取用户的输入。
public class Main {
定义了一个名为Main
的公共类。
public static void main(String[] args) {
定义了程序的主入口点main
方法。
Scanner sc = new Scanner(System.in);
创建了Scanner
类的一个实例sc
,用于从标准输入读取数据。
String arr = sc.nextLine();
读取用户输入的一行文本,通常是一个密码,并将其存储在字符串变量arr
中。
if (arr.length() < 6 || arr.length() > 10) {
检查密码的长度是否小于6或大于10。
System.out.println("Password is invalid.");
如果长度不符合要求,打印一条消息并退出程序。
System.exit(0); }
结束if语句,并正常退出程序。
for (int i = 0; i < arr.length(); i++) {
遍历密码字符串的每个字符。
if (arr.charAt(i) == ' ') {
检查当前字符是否是空格。
System.out.println("Password is invalid.");
如果密码中包含空格,打印一条消息并退出程序。
System.exit(0);
结束if语句,并正常退出程序。
}
结束for循环中的if语句。
}
结束for循环。
int min = 0; int max = 0; int di = 0; int fu = 0;
初始化四个计数器变量,用于统计不同类型的字符。
for (int i = 0; i < arr.length(); i++) {
再次遍历密码字符串的每个字符,这次是为了统计字符类型。
if (arr.charAt(i) >= '0' && arr.charAt(i) <= '9') {
检查当前字符是否是数字。
di += 1;
如果是数字,增加数字计数器di
。
} else if (arr.charAt(i) >= 'A' && arr.charAt(i) <= 'Z') {
检查当前字符是否是大写字母。
max += 1;
如果是大写字母,增加大写字母计数器max
。
} else if (arr.charAt(i) >= 'a' && arr.charAt(i) <= 'z') {
检查当前字符是否是小写字母。
min += 1;
如果是小写字母,增加小写字母计数器min
。
} else {
如果当前字符不是字母、数字或下划线。
fu += 1;
增加特殊字符计数器fu
。
}
结束if-else语句。
}
结束for循环。
if (min >= 1 && max >= 1 && di >= 1 && fu >= 1) {
检查是否至少有一个小写字母、一个大写字母、一个数字和一个特殊字符。
System.out.println("Password is valid.");
如果所有条件都满足,打印一条消息表明密码有效。
} else {
否则,密码无效。
System.out.println("Password is invalid.");
打印一条消息表明密码无效。
}
结束if-else语句。
}
结束main
方法。
}
结束Main
类。
这个程序的逻辑是:首先检查密码的长度是否在6到10个字符之间,然后检查密码中是否包含空格。接着,统计密码中小写字母、大写字母、数字和其他字符的数量。最后,检查是否每种类型的字符至少有一个,以此来判断密码是否有效。
这篇关于sdut lava lab7.5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!