sdut lava lab7.5

2024-05-10 05:52
文章标签 sdut lava lab7.5

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/975617

相关文章

SDUT OJ 2798小鑫的城堡 并查集

题目描述 从前有一个国王,他叫小鑫。有一天,他想建一座城堡,于是,设计师给他设计了好多简易图纸,主要是房间的连通的图纸。小鑫希望任意两个房间有且仅有一条路径可以相通。小鑫现在把设计图给你,让你帮忙判断设计图是否符合他的想法。比如下面的例子,第一个是符合条件的,但是,第二个不符合,因为从5到4有两条路径(5-3-4和5-6-4)。 输入 多组输入,每组第一行包含一个整数m(m

sdut 1225 编辑距离(dp)

题目描述 假设字符串的基本操作仅为:删除一个字符、插入一个字符和将一个字符修改成另一个字符这三种操作。  我们把进行了一次上述三种操作的任意一种操作称为进行了一步字符基本操作。 下面我们定义两个字符串的编辑距离:对于两个字符串a和b,通过上述的基本操作,我们可以把a变成b或b变成a,那么字符串a变成字符串b需要的最少基本字符操作步数称为字符串a和字符串b的编辑距离。 例如:a="AB

hdu 1429胜利大逃亡(续) / sdut 2193 救基友记3(BFS)

http://acm.hdu.edu.cn/showproblem.php?pid=1429 做了热身赛http://blog.csdn.net/u013081425/article/details/21740001 之后发现这道题好水,之前怎么没刷到呢。。 同样标记数组增加一维,标记到某一点时他拥有钥匙的状态,因为有10种钥匙,所以mark[][][1<<10+10]来标记每到一点的状态。

SDUT OJ 2892——字典树

A Time Limit: 60ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 给出n(1<= n && n <= 2*10^6)个字符串,每个字符串只包含小写英文字母,且最多有五个。问这n个字符串中出现次数最多的有多少个。 输入 单组输入。第一行输入一个数字n,接下来n行,每行包含一个字符串。 输出

校赛 SDUT OJ2860生日Party(BFS)

题目地址:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2860 唉。。校赛的时候把这题用搜索的时间复杂度2^15次方想成了15^15次方。。。。所以没写。。。后来用的最短路的floyd算法改成了最长路做的,但有一些细节不好处理,调了会没调出来。。赛后才想到用暴搜不会超时。。于是补完线代后怒敲暴搜代码

SDUT 3061 聪明的玛雅 (状压DP)

题目地址:SDUT 3061 这题的比赛的时候的后台数据是错的。。。好坑啊。。。。就不吐槽出题人了。。 比赛的时候我的思路是错的,漏考虑了一种情况。应该把所有状态下的最短距离都要求出来,而我当时的思路是按照前面能选两个则选两个的贪心思路来状压,但是有的时候可以最多走奇数个并且没全走完,这种情况下就不对了。 正确思路是每次找两个没走过的状态,分成选一个和选两个两种情况来DP。然后最后找所有状态

SDUT OJ 3045 迷之图论 (树的直径)

题目地址:SDUT OJ 3045 这题比赛的时候想的差不多。。但是总是觉得不对。。写了一次就没再写,然后删了。。当时没想到的是第二次求出来的就是最长链。。当时想到的两次bfs找最大值(这一种方法其实结果也对。。TAT。。),还有找到点后在回溯减去重点等等。。但总觉得好像都不太对。。。赛后才知道这题原来是树的直径。。。。。牡丹江区域现场赛的时候遇到过,不过赛后也没看。。。 找树的直径的方法其实

递推8-----7-8 sdut-C语言实验-王小二切饼0)

7-8 sdut-C语言实验-王小二切饼 分数 20 全屏浏览 切换布局 作者 马新娟 单位 山东理工大学 王小二自夸刀工不错,有人放一张大的煎饼在砧板上,问他:“饼不许离开砧板,切n(1<=n<=100)刀最多能分成多少块?” 输入格式: 输入切的刀数n。 输出格式: 输出为切n刀最多切的饼的块数。 输入样例: 在这里给出一组输入。例如: 100 输出样例:

sdut——魔幻数字47

题目描述 数字47一向被数学界的人认为是很魔幻的一个数字,和47有关的任务被认为是魔幻任务。现在有一个简单的魔幻任务,给定a和b,打印所有在 以a,b为端点的闭区间 中最后两位为47的整数,你能一次AC吗?? 输入 第一行为一个整数n,表示有多少组测试数据。(n <= 100) 第2-n+1行,每行两个整数,分别代表a,b。(a,b <= 10000) 输出 对于每组

sdut——选夫婿1

题目描述 倾国倾城的大家闺秀潘小姐要选夫婿啦!武林中各门各派,武林外各大户人家,闻讯纷纷前来,强势围观。前来参与竞选的男生藏龙卧虎,高手云集,才子遍布,帅哥纷纭,更不乏富二代,官二代,可谓声势空前。     每个人参与竞选的帅哥除了进行一段激情洋溢的求婚演讲以外,还要报上自己姓名、身高和体重,以及个人简历。最后再进行文武选拔,最后夺魁者方能得到潘小姐的芳心。        潘小姐不爱名利