Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java中的字符串根据特定要求接受密码_Java_String - Fatal编程技术网

使用Java中的字符串根据特定要求接受密码

使用Java中的字符串根据特定要求接受密码,java,string,Java,String,假设这个程序接受输入到一个字符串中,即密码。然后,程序检查以确保密码长度至少为8个字符,至少包含2位数字,并且仅包含字母和数字。我似乎无法获得至少两位数的正确计数方法,尽管从我所看到的情况来看,这种方法应该是可行的 这就是我得到的错误 线程“main”java.lang.StringIndexOutOfBoundsException中出现异常:字符串索引超出范围:10 位于java.lang.String.charAt(String.java:658) 位于Password.main(Passw

假设这个程序接受输入到一个字符串中,即密码。然后,程序检查以确保密码长度至少为8个字符,至少包含2位数字,并且仅包含字母和数字。我似乎无法获得至少两位数的正确计数方法,尽管从我所看到的情况来看,这种方法应该是可行的

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

import java.util.*;
公共类密码{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
字符串s;
整数=0;
System.out.println(“输入密码(必须只包含字母和数字,”);
系统输出打印(“最少8个字符,至少两个数字):”;
s=input.nextLine();
而(1==1){
如果(s.长度()<8){
System.out.println(“密码太短”);
System.out.println(“输入格式正确的密码”);
s=input.nextLine();
继续;
}
如果(s.matches(“^[a-zA-Z0-9\]+$”){
}
否则{
System.out.println(“密码只能包含字母和数字”);
System.out.println(“输入格式正确的密码”);
s=input.nextLine();
继续;
}
int i;

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


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


for(i=0;i由于使用从0到长度的索引,此语句出现异常。请使用从0到
 for (i = 0; i <= s.length(); i++){
    if (Character.isDigit(s.charAt(i))){
        numbers++;
    }
 }

for(i=0;i由于使用从0到长度的索引,此语句出现异常。请使用从0到
 for (i = 0; i <= s.length(); i++){
    if (Character.isDigit(s.charAt(i))){
        numbers++;
    }
 }

for(i=0;iReplace for(i=0;iReplace for(i=0;i)作为注释,
while(1==1)
可以是
while(true)
。您是在问如何解决这个问题?还是在问是什么导致了这个错误。@a.R.S.或者,仅仅是
while((S=input.nextLine()).length()<8)
,删除上一个下一行。请注意,
while(1==1)
可以
while(true)
。您是在问如何解决此问题?还是在问是什么导致错误。@a.R.S.或者,在删除上一个下一行的情况下,
while((S=input.nextLine()).length()<8)
 for (i = 0; i <= s.length(); i++){
    if (Character.isDigit(s.charAt(i))){
        numbers++;
    }
 }