gpt4 book ai didi

java - 在Java中使用字符串来接受基于特定要求的密码

转载 作者:行者123 更新时间:2023-12-01 17:29:11 25 4
gpt4 key购买 nike

该程序应该接受字符串输入,即密码。然后,程序会检查以确保密码长度至少为 8 个字符,至少包含 2 位数字,并且仅包含字母和数字。我似乎无法找到计算至少 2 位数字的正确方法,尽管从我所见这个方法应该可行。

这是我收到的错误线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:10 在 java.lang.String.charAt(String.java:658) 在Password.main(Password.java:35)

import java.util.*;


public class Password{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
String s;
int numbers = 0;

System.out.println("Enter a password (Must contain only letters and numbers, ");
System.out.print("minimum of 8 characters with atleast two numbers): ");
s = input.nextLine();

while(1==1){
if (s.length() < 8){
System.out.println("Password is too short");
System.out.println("Enter correctly formatted password");
s = input.nextLine();
continue;
}

if (s.matches("^[a-zA-Z0-9_]+$")){
}
else{
System.out.println("Password may only contain Letters and Digits");
System.out.println("Enter correctly formatted password");
s = input.nextLine();
continue;
}



int i;
for (i = 0; i <= s.length(); i++){
if (Character.isDigit(s.charAt(i))){
numbers++;
}
}

if (numbers < 2){
System.out.println("Password must contain atleast 2 digits");
System.out.println("Enter correctly formatted password");
s = input.nextLine();
continue;
}
break;
}


while (0==0){
System.out.println("Reenter Password to see if it matches");
String a = input.nextLine();

if (s.equals(a)){
System.out.println("Password matches!");
break;
}
else{
System.out.println("Password does not match");
continue;
}
}
}
}

最佳答案

在 for 循环中,不应允许 i 等于 s.length()

for (i = 0; i <= s.length(); i++)

当您尝试访问s[s.length()]时会引发ArrayIndexOutOfBoundsException。

关于java - 在Java中使用字符串来接受基于特定要求的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12666742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com