编程作业(2) - 编程题 5. 密码检查(JAVA)

简介: 编程作业(2) -编程题 5. 密码检查(JAVA)

【问题描述】


开发一个密码检查软件,密码要求:


长度超过8位


包括大小写字母.数字.其它符号,以上四种至少三种


不能有相同长度大于或等于2的子串重复


【输入形式】


一组或多组长度超过2的子符串。每组占一行


【输出形式】


如果符合要求输出:OK,否则输出NG


【样例输入】


021Abc9000


021Abc9Abc1


021ABC9000


021$bc9000



【样例输出】


OK

NG

NG

OK

import java.util.Scanner;
public class Main {
  public static void main(String[] args) {
    Scanner s = new Scanner(System.in);
    while (s.hasNext()) {
      String str = s.next();
      if (str.length() < 8) {
        System.out.println("NG");
        continue;
      }
      char[] chars = str.toCharArray();
      int a=0,b = 0,c=0,d=0;
      for (int i = 0; i < str.length(); i++) {
        if (Character.isDigit(chars[i])) a=1;
        else if (Character.isUpperCase(chars[i])) b=1;
        else if (Character.isLowerCase(chars[i])) c=1;
        else d=1;
      }
      if (a+b+c+d<3) {
        System.out.println("NG") ;
        continue;
      }
      boolean flag=true;
      for (int i = 0; i <= str.length()-2; i++) {
        for (int j = i + 2; j <= str.length(); j++) {
          String substring = str.substring(i, j);
//          System.out.println(substring+" "+str.indexOf(substring));
          if (str.indexOf(substring)!=i&&(j-str.indexOf(substring))>=(substring.length()*2)) {
            flag=false;
          } 
        }
      }
      if(flag){
        System.out.println("OK");
      }else{
        System.out.println("NG");
      }
    }
  }
}


相关文章
|
3月前
|
IDE Java 编译器
java编程最基础学习
Java入门需掌握:环境搭建、基础语法、面向对象、数组集合与异常处理。通过实践编写简单程序,逐步深入学习,打牢编程基础。
241 1
|
3月前
|
Java
如何在Java中进行多线程编程
Java多线程编程常用方式包括:继承Thread类、实现Runnable接口、Callable接口(可返回结果)及使用线程池。推荐线程池以提升性能,避免频繁创建线程。结合同步与通信机制,可有效管理并发任务。
187 6
|
3月前
|
安全 前端开发 Java
从反射到方法句柄:深入探索Java动态编程的终极解决方案
从反射到方法句柄,Java 动态编程不断演进。方法句柄以强类型、低开销、易优化的特性,解决反射性能差、类型弱、安全性低等问题,结合 `invokedynamic` 成为支撑 Lambda 与动态语言的终极方案。
179 0
|
4月前
|
Java
Java基础学习day08-作业
本作业涵盖Java中Lambda表达式的应用,包括Runnable与Comparator接口的简化实现、自定义函数式接口NumberProcessor进行加减乘及最大值操作,以及通过IntProcessor处理整数数组,实现遍历、平方和奇偶判断等功能,强化函数式编程实践。
88 5
|
4月前
|
Java
Java基础学习day07-作业
本作业包含六个Java编程案例:1)动物类继承与多态;2)加油卡支付系统;3)员工管理类设计;4)学生信息统计接口;5)USB设备控制;6)家电智能控制。综合运用抽象类、接口、继承、多态等面向对象技术,强化Java基础编程能力。
194 3
|
4月前
|
Java
Java基础学习day06-作业
本内容为Java基础学习作业,涵盖两个案例:一是通过Card类及其子类GoldenCard、SilverCard实现加油卡系统,体现封装与继承;二是通过Shape类及子类Circle、Rectangle演示多态与方法重写,强化面向对象编程理解。
103 1
|
4月前
|
SQL Java 数据库
2025 年 Java 从零基础小白到编程高手的详细学习路线攻略
2025年Java学习路线涵盖基础语法、面向对象、数据库、JavaWeb、Spring全家桶、分布式、云原生与高并发技术,结合实战项目与源码分析,助力零基础学员系统掌握Java开发技能,从入门到精通,全面提升竞争力,顺利进阶编程高手。
784 1
|
4月前
|
Java 开发者
Java并发编程:CountDownLatch实战解析
Java并发编程:CountDownLatch实战解析
481 100
|
3月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
203 1
|
3月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
230 1