《小奎练习题PAT》PAT(乙级)1081 检查密码(JAVA)

该代码片段是一个Java程序,用于检查用户注册时设置的密码是否符合特定要求。程序会判断密码长度是否至少为6个字符,是否包含英文字母、数字和小数点,并确保密码同时含有字母和数字。根据这些条件,程序将给出相应的反馈信息,如'Yourpasswordiswanmei.'(密码合法)或'Yourpasswordistaiduanle.'(密码太短)等。

1.题目如下:

本题要求你帮助某网站的用户注册模块写一个密码合法性检查的小功能。该网站要求用户设置的密码必须由不少于6个字符组成,并且只能有英文字母、数字和小数点
.,还必须既有字母也有数字。

输入格式:

输入第一行给出一个正整数 N(≤ 100),随后 N 行,每行给出一个用户设置的密码,为不超过 80 个字符的非空字符串,以回车结束。

注意: 题目保证不存在只有小数点的输入。

输出格式:

对每个用户的密码,在一行中输出系统反馈信息,分以下5种:

如果密码合法,输出Your password is wan mei.; 如果密码太短,不论合法与否,都输出Your password is
tai duan le.; 如果密码长度合法,但存在不合法字符,则输出Your password is tai luan le.;
如果密码长度合法,但只有字母没有数字,则输出Your password needs shu zi.;
如果密码长度合法,但只有数字没有字母,则输出Your password needs zi mu.。

输入样例:

5
123s
zheshi.wodepw
1234.5678
WanMei23333
pass*word.6

输出样例:

Your password is tai duan le.
Your password needs shu zi.
Your password needs zi mu.
Your password is wan mei.
Your password is tai luan le.

代码长度限制 16 KB 时间限制 400 ms 内存限制 64 MB

2.代码如下:

package pat_1081;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class TestPractice1081 {
	public static void main(String[] args) {
		try {
			BufferedReader bf1=new BufferedReader(new InputStreamReader(System.in));
			int N=Integer.parseInt(bf1.readLine());
			
			for(int i=0;i<N;i++) {
				String temp=bf1.readLine();
				if(temp.length()<6) {
					System.out.println("Your password is tai duan le.");
				}
				else { 
					int haveWord=0;
					int haveNum=0;
					int isLuan=0;;
					for(int j=0;j<temp.length();j++) {
						if(j==temp.length()-1) {
							if(!isLegal(temp.substring(j).charAt(0))) {
								System.out.println("Your password is tai luan le.");
								isLuan=1;
								break;
							}
							if(isWord(temp.substring(j).charAt(0))) {
								haveWord=1;
							}
							if(isNum(temp.substring(j).charAt(0))) {
								haveNum=1;
							}
						}
						else {
							if(!isLegal(temp.substring(j,j+1).charAt(0))) {
								System.out.println("Your password is tai luan le.");
								isLuan=1;
								break;
							}
							if(isWord(temp.substring(j,j+1).charAt(0))) {
								haveWord=1;
							}
							if(isNum(temp.substring(j,j+1).charAt(0))) {
								haveNum=1;
							}
						}
					
					}
					
					//System.out.println(haveWord+" "+haveNum+" "+isLuan);
					
					if(isLuan==0) {
						if(haveNum==0) {
							System.out.println("Your password needs shu zi.");
		
						}
						else {
							if(haveWord==0) {
								System.out.println("Your password needs zi mu.");
								
							}
							else {
								System.out.println("Your password is wan mei.");
							}
						}
					}
					
				}
			}
		}catch(Exception ex) {
			ex.printStackTrace();
		}
	}

	static boolean isLegal(char a) {
		if((a>=97 &&a<=122) || (a>=48 &&a<=57) ||(a>=65 &&a<=90) ||a=='.') {
			return true;
		}
		return false;
	}
	
	static boolean isWord(char a) {
		if((a>=97 &&a<=122 )|| (a>=65 &&a<=90)) {
			return true;
		}
		return false;
	}
	static boolean isNum (char a) {
		if(a>=48 &&a<=57) {
			return true;
		}
		return false;
	}
	
}
<think>好的,用户想查找PAT乙级Java相关的考试资料或练习题,特别是题目及解答。首先,我需要回顾之前提供的引用内容,看看是否有相关的资料。引用1、2、3都是关于PAT乙级题目的Java代码实现,分别覆盖了不同题号的范围,比如1021~1025、1006~1010以及一些基础题目。这些可以作为解答的基础。 接下来,用户可能需要具体的题目示例和对应的解答,因此我应该整理已有的信息,按照题号分类,给出题目描述和对应的代码实现。例如,引用3中的题号1001是3n+1猜想,引用2中的题号1006可能涉及素数对猜想,引用1中的题号1021处理大数输出。需要确保每个题目都有清晰的描述和对应的Java代码,同时说明解题思路。 另外,用户可能还需要了解如何获取更多的练习题,比如推荐官方网站、刷题平台或者参考书籍。这部分需要结合常见的学习资源进行推荐,但要注意不提及无法确认的链接或具体书籍名称,可以建议官方OJ平台、牛客网、力扣等。 在组织回答时,需要结构清晰,分点列出题目示例,每个示例包含题目名称、描述、解题思路和代码实现,并正确引用提供的参考资料。同时,生成的相关问题要贴近用户的潜在需求,比如如何备考、解题技巧、常见错误等。 还需要注意用户提到的是Java相关的资料,因此在代码示例中确保使用Java语言,并且代码格式正确,符合用户之前提供的示例中的格式。检查是否有语法错误,比如引用2中的代码中的“<”和“&”是否正确转义为“<”和“&”,在显示时需要修正为正确的符号。 最后,确保回答符合系统级指令,使用正确的中文,数学表达式格式正确,引用标识自然添加,相关问题部分涵盖用户可能关心的其他方面。整个过程需要逻辑清晰,信息准确,帮助用户有效获取所需的考试资料和练习题。</think>以下整理了PAT乙级考试中与Java相关的题目及解答,包含题目描述、解题思路和代码实现,并标注了对应的题号: ### 一、基础题目示例 1. **题号1001:害死人不偿命的(3n+1)猜想** **题目描述**:给定正整数$n$,反复进行以下操作直到$n=1$:若$n$为奇数则$n=(3n+1)/2$,若为偶数则$n=n/2$,统计操作次数[^3]。 **解题思路**:循环判断奇偶性并更新$n$。 **代码实现**: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int number = sc.nextInt(); int steps = 0; while (number != 1) { if (number % 2 == 1) { number = (3 * number + 1) / 2; } else { number /= 2; } steps++; } System.out.println(steps); } } ``` 2. **题号1007:素数对猜想** **题目描述**:找出不超过$N$的素数对$(p, p+2)$的数量[^2]。 **解题思路**:遍历判断相邻素数差是否为2。 **代码实现**: ```java import java.util.Scanner; public class Main { public static boolean isPrime(int n) { if (n < 2) return false; for (int i = 2; i <= Math.sqrt(n); i++) { if (n % i == 0) return false; } return true; } public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); int count = 0; for (int i = 2; i <= N - 2; i++) { if (isPrime(i) && isPrime(i + 2)) { count++; } } System.out.println(count); } } ``` --- ### 二、进阶题目示例 1. **题号1021:大数处理** **题目描述**:输入一个超大整数(可能超过`long`范围),直接输出其字符串形式[^1]。 **解题思路**:使用`BigDecimal`类直接读取并输出。 **代码实现**: ```java import java.io.*; import java.math.BigDecimal; public class Main { public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); BigDecimal n = new BigDecimal(bf.readLine()); System.out.println(n.toPlainString()); } } ``` --- ### 三、备考建议 1. **官方题库**:优先练习浙江大学PAT官网的乙级真题,涵盖完整考点。 2. **刷题平台**: - **牛客网**:提供PAT乙级专项练习。 - **力扣(LeetCode)**:搜索“PAT乙级”相关标签题目。 3. **参考书籍**:《算法笔记》包含PAT乙级题目解析与技巧总结。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_panbk_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值