HDU2043密码(升级)

HDU2043密码(升级)

java版

题目:

首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足以下条件:

密码长度大于等于8,且不要超过16。

安全密码中可拥有的四个字符类别分别为:

1.大写字母:A,B,C…Z;

2.小写字母:a,b,c…z;

3.数字:0,1,2…9;

4.特殊符号:~,!,@,#,$,%,^;

若出现别的字符算是没有作用的字符,该字符只算在总长度内(如?/等)

给出一个密码,判断它的安全程度

1.如果长度小于8,输出too lack (从上至下,如果不满足,则不需要再继续往后判断)

2.如果长度大于16,输出too long

3.密码必须是字母开头,不是的话输出no letter

4.拥有三种或者四种字符的密码,输出good
 拥有两种字符的密码,输出ok
 拥有一种字符的密码,输出not well

样例:

输入样例输出样例
1234too lack
123qwertyuno letter
Qwertyuiopok
Qwertyuiop123good
qwertyuiopnot well
Qwertyuiop%good

代码:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        
        while(input.hasNextLine()){
         String str = input.nextLine();
      
         int count1 = 0, count2 = 0, count3 = 0, count4 = 0;    //定义计数器,统计字符种类
         int sum;
         int len = str.length();        //获取密码长度
         if(8<=len && len<=16) {        //如果密码长度满足要求,则判断3,4条是否满足
          for(int i = 0;i < len; i++) {
           if(Character.isLetter(str.charAt(0)) != true) {
            System.out.println("no letter");        //判断开头是否是字母
            break;
           }
           
           if(Character.isLowerCase(str.charAt(i)))
            count1 = 1;    //判断是否有小写字母
           else if(Character.isUpperCase(str.charAt(i)))
            count2 = 1;    //判断是否有大写字母
           else if(Character.isDigit(str.charAt(i)))
            count3 = 1;    //判断是否有数字
           else if( str.charAt(i) == '!' || str.charAt(i) == '@' || str.charAt(i) == '#' || str.charAt(i) == '$' || str.charAt(i) == '%' || str.charAt(i) == '^' || str.charAt(i) == '~')
            count4 = 1;    //判断是否有~,!,@,#,$,%,^字符
          }
          sum = count1 + count2 + count3 + count4;    //统计字符种类
          if(sum == 1)
           System.out.println("no well");
          else if(sum == 2)
           System.out.println("ok");
          else if(sum == 3 || sum == 4)
           System.out.println("good");
         }
         else if(len < 8)
          System.out.println("too lack");
         else if(len > 16)
          System.out.println("too long");
        }
        input.close();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值