求java大神 50

题目描述网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。其实要想能安安心心地上网其实也不难,学点安全知识就可以。首先,我们就要设置一个安全的密码。那什么样的密码才叫安全... 题目描述
网上流传一句话:"常在网上飘啊,哪能不挨刀啊~"。其实要想能安安心心地上网其实也不难,学点安全知识就可以。
首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:
(1).密码长度大于等于8,且不要超过16。
(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。
这四个字符类别分别为:
1.大写字母:A,B,C...Z;
2.小写字母:a,b,c...z;
3.数字:0,1,2...9;
4.特殊符号:~,!,@,#,$,%,^;
给你一个密码,你的任务就是判断它是不是一个安全的密码。
输入
输入数据第一行包含一个数M,接下有M行,每行一个密码(长度最大可能为50),密码仅包括上面的四类字符。
输出
对于每个测试实例,判断这个密码是不是一个安全的密码,是的话输出YES,否则输出NO。
样例输入
3
a1b2c3d4
Linle@ACM
^~^@^@!%
样例输出
NO
YES
NO
import java.util.Scanner;
public class hjh {
public static void main(String[] args) {
Scanner s=new Scanner(System.in);
int a=s.nextInt();
Scanner xx=new Scanner(System.in);
while(true){String c;
c=xx.nextLine();

int sum1 = 0,sum2 = 0,sum3 = 0,sum4 = 0;
for(int i=0;i<c.length();i++){
if(c.charAt(i)>='a'&&c.charAt(i)<='z')
sum1++;break;
}
for(int i=0;i<c.length();i++){
if(c.charAt(i)>='A'&&c.charAt(i)<='Z')
{ sum2++;break;}

}
for(int i=0;i<c.length();i++){
if(c.charAt(i)>='0'&&c.charAt(i)<='9')
{sum3++;break;}

}
for(int i=0;i<c.length();i++){
if(c.charAt(i)=='~'||c.charAt(i)=='!'||c.charAt(i)=='@'||c.charAt(i)=='#'||c.charAt(i)=='$'||c.charAt(i)=='%'||c.charAt(i)=='^')
{ sum4++;break;}

}
if((sum1+sum2+sum3+sum4)>=3&&c.length()>=8&&c.length()<=16){
System.out.print("YES");
}else{
System.out.print("NO");
}
}
为什么我的代码错了,该怎么改
展开
 我来答
69746831
2015-12-11 · TA获得超过1415个赞
知道大有可为答主
回答量:2038
采纳率:72%
帮助的人:809万
展开全部

for(int i=0;i<c.length();i++){
if(c.charAt(i)>='a'&&c.charAt(i)<='z')
sum1++;break;
}

这里,break应该在if里,没有写{},还有,你写的只是读取一行

public class MakePwd {
public static void main(String[] args) {

demo2();
}

public static void demo1(){
System.out.println("请输入行数:");
Scanner line = new Scanner(System.in);
int lineNum = line.nextInt();
for(int i = 0; i < lineNum; i++){
System.out.println("请输入第" + (i+1) + "行:");
System.out.println();
Scanner xx = new Scanner(System.in);
String input = xx.nextLine();
if(input == null || input.length() == 0){
System.out.println("没有输入,作废,程序结束");
return;
}else if(input.length() < 8 || input.length() > 16){
System.out.println("密码长度大于等于8,且不要超过16");
System.out.println();
continue;
}
if(!check(input)){
System.out.println("本行错误");
System.out.println();
}
System.out.println("输入完成");
}
}

public static void demo2(){
System.out.println("请输入行数:");
Scanner line = new Scanner(System.in);
int lineNum = line.nextInt();
List<String> list = new ArrayList<String>();
for(int i = 0; i < lineNum; i++){
Scanner xx = new Scanner(System.in);
String input = xx.nextLine();
list.add(input);

if(input == null || input.length() == 0){
System.out.println("没有输入,作废,程序结束");
return;
}else if(input.length() < 8 || input.length() > 16){
System.out.println("密码长度大于等于8,且不要超过16,程序结束");
System.out.println();
return;
}

}
System.out.println("输入完成");
for(String str : list){
check(str);
}
}

public static boolean check(String c){

int sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;
for (int i = 0; i < c.length(); i++) {
if (c.charAt(i) >= 'a' && c.charAt(i) <= 'z'){
sum1++;
break;
}
}

for (int i = 0; i < c.length(); i++) {
if (c.charAt(i) >= 'A' && c.charAt(i) <= 'Z') {
sum2++;
break;
}
}

for (int i = 0; i < c.length(); i++) {
if (c.charAt(i) >= '0' && c.charAt(i) <= '9') {
sum3++;
break;
}
}

for (int i = 0; i < c.length(); i++) {
if (c.charAt(i) == '~' || c.charAt(i) == '!'
|| c.charAt(i) == '@' || c.charAt(i) == '#'
|| c.charAt(i) == '$' || c.charAt(i) == '%'
|| c.charAt(i) == '^') {
sum4++;
break;
}
}

if ((sum1 + sum2 + sum3 + sum4) >= 3 && c.length() >= 8
&& c.length() <= 16) {
System.out.println("YES");
return true;
} else {
System.out.println("NO");
return false;
}

}
}
简单写了个例子,编程时注意规范
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式