java - 如何向此密码检查器添加循环
问题描述
我创建了一个密码检查程序。它所做的只是要求输入密码,然后在密码不符合我制定的规则时输出。我想寻求帮助以找出循环这个权利,这样您就可以检查多个密码而无需重新启动。
import java.util.Scanner;
public class password {
public static void main(String[] args) {
String end = "endofinput";
Scanner word = new Scanner(System.in);
System.out.print("Password:");
String password = word.nextLine();
// password
if(password.contains("password")){
System.out.println("Password may not contain the word password");
}
// lenght
if( password.length() < 8){
System.out.println("Needs to be longer");
}
//space/special check
if((password.contains(" ")||password.contains("@")|| password.contains("#")|| password.contains("!") || password.contains("~")|| password.contains("$") || password.contains("%") || password.contains("^")|| password.contains("*") || password.contains("(")|| password.contains(")") || password.contains("-")|| password.contains("+") || password.contains("/")|| password.contains(":") || password.contains("&")|| password.contains(".")|| password.contains(", ") || password.contains("<")|| password.contains(">")|| password.contains("?")|| password.contains("|"))){
System.out.println("No spaces or special Characters");
}
// Number
if(!(password.contains("1")|| password.contains("2")||password.contains("3")||password.contains("4")||password.contains("5")||password.contains("6")||
password.contains("7")||password.contains("8")||password.contains("9")||password.contains("0"))){
System.out.println("Need a Number");
}
// upper case
if (true) {
int count = 0;
for (int i = 65; i <= 90; i++) {
// type casting
char c = (char)i;
String e = Character.toString(c);
if (password.contains(e)) {
count = 1;
}
}
if (count == 0) {
System.out.println("Needs an uppercase letter");
}
}
//lower case
if (true) {
int count = 0;
for (int i = 90; i <= 122; i++) {
// type casting
char c = (char)i;
String str1 = Character.toString(c);
if (password.contains(str1)) {
count = 1;
}
}
if (count == 0) {
System.out.println("Needs Lower case");
}
}
}
}
解决方案
只需添加一个带有“True”条件的while,然后添加一个带有您想要的条件的if,以退出循环,例如ìf(password == "Exit")
。像这样。
while(true)
{
System.out.print("Password:");
String password = word.nextLine();
if(password == "exit")
{
System.out.println("Ending the program");
break; //this break will stop the loop
}
// password
if(password.contains("password")){
System.out.println("Password may not contain the word password");
}
// lenght
if( password.length() < 8){
System.out.println("Needs to be longer");
}
//space/special check
if((password.contains(" ")||password.contains("@")|| password.contains("#")|| password.contains("!") || password.contains("~")|| password.contains("$") || password.contains("%") || password.contains("^")|| password.contains("*") || password.contains("(")|| password.contains(")") || password.contains("-")|| password.contains("+") || password.contains("/")|| password.contains(":") || password.contains("&")|| password.contains(".")|| password.contains(", ") || password.contains("<")|| password.contains(">")|| password.contains("?")|| password.contains("|"))){
System.out.println("No spaces or special Characters");
}
if(!(password.contains("1")|| password.contains("2")||password.contains("3")||password.contains("4")||password.contains("5")||password.contains("6")||
password.contains("7")||password.contains("8")||password.contains("9")||password.contains("0"))){
System.out.println("Need a Number");
}
// upper case
if (true) {
int count = 0;
for (int i = 65; i <= 90; i++) {
// type casting
char c = (char)i;
String e = Character.toString(c);
if (password.contains(e)) {
count = 1;
}
}
if (count == 0) {
System.out.println("Needs an uppercase letter");
}
}
//lower case
if (true) {
int count = 0;
for (int i = 90; i <= 122; i++) {
// type casting
char c = (char)i;
String str1 = Character.toString(c);
if (password.contains(str1)) {
count = 1;
}
}
if (count == 0) {
System.out.println("Needs Lower case");
}
}
}
推荐阅读
- java - 无法调用“Object.getClass()”,因为“obj”为空 - JavaFX
- visual-studio-code - electron_node bundle.js 在 vscode 中使用大量 CPU
- javascript - JavaScript连接数组而不重复不正确排序
- php - 无法在 mysql 数据库上执行 PHP POST 请求
- sql - 如何查询将日期时间值存储为 biginit 的数据库表
- react-native - React Native 的自定义滑块和范围滑块
- javascript - 基于另一个数组的多数组过滤器
- c# - 为什么我不能编译任何旧项目或新项目?
- java - 从 Control-M 反复调用 Windows 批处理文件以执行 java jar
- spring-boot - 如何允许 Spring Boot 应用程序使用具有 Spring Cloud 依赖关系的自定义 jar