1-20密码验证合格程序
Posted code666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1-20密码验证合格程序相关的知识,希望对你有一定的参考价值。
题目描述
密码要求:
1.长度超过8位
2.包括大小写字母.数字.其它符号,以上四种至少三种
3.不能有相同长度超2的子串重复
说明:长度超过2的子串
输入描述:
一组或多组长度超过2的子符串。每组占一行
输出描述:
如果符合要求输出:OK,否则输出NG
输入例子:
021Abc9000 021Abc9Abc1 021ABC9000 021$bc9000
输出例子:
OK NG NG OK
代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNextLine()){
int count=0;
boolean flag=false,flag1=false;
String s =sc.nextLine();
if(s.length()>8){
for(int i=0;i<s.length();i++){
if(s.charAt(i)>=‘0‘&&s.charAt(i)<=‘9‘){
count++;
break;
}
else continue;
}
for(int i=0;i<s.length();i++){
if(s.charAt(i)>=‘A‘&&s.charAt(i)<=‘Z‘){
count++;
break;
}
else continue;
}
for(int i=0;i<s.length();i++){
if(s.charAt(i)>=‘a‘&&s.charAt(i)<=‘z‘){
count++;
break;}
else continue;
}
for(int i=0;i<s.length();i++){
if(!((s.charAt(i)>=‘0‘&&s.charAt(i)<=‘9‘)||(s.charAt(i)>=‘A‘&&s.charAt(i)<=‘Z‘)||(s.charAt(i)>=‘a‘&&s.charAt(i)<=‘z‘))){
count++;
break;
}
else continue;
}
if(count>=3){
flag=true;
while(flag){
for(int i=0;i<=s.length()-4;i++){
String a=s.substring(i, i+3);
for(int j=i+1;j<=s.length()-3;j++){
String b=s.substring(j, j+3);
if(a.equals(b)){
flag1=true;
break;
}
else continue;
}
if(flag1){
System.out.println("NG");
flag=false;
break;
}
else continue;
}
if(flag1==false){
System.out.println("OK");
flag=false;
}
}
}
else System.out.println("NG");
}
else System.out.println("NG");
}
}
}
收获:(1)允许输入多行:int count=0;最好放在while(sc.hasNextLine())后面,否则会记录count上次运行的值。
(2)截取字符串 String a=s.substring(i, i+3);
public String substring(int beginIndex, int endIndex)
第一个int为开始的索引,对应String数字中的开始位置,
第二个是截止的索引位置,对应String中的结束位置
1、取得的字符串长度为:endIndex - beginIndex;
2、从beginIndex开始取,到endIndex结束,从0开始数,其中不包括endIndex位置的字符(注意)。
(3)比较字符串是否相等,错误写法if(a==b)
正确写法if(a.equals(b))
以上是关于1-20密码验证合格程序的主要内容,如果未能解决你的问题,请参考以下文章