java问题,为什么index out of range: 6 ?

""Exceptioninthread"main"java.lang.StringIndexOutOfBoundsException:Stringindexoutofra... ""Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.charAt(String.java:658)
at PassordVerifier.main(PassordVerifier.java:15)
----jGRASP wedge2: exit code for process is 1."

import java.util.Scanner;
public class PassordVerifier
{
public static void main(String[] args)
{
String str;
Scanner k=new Scanner(System.in);
System.out.println("Enter your password,which should be at least six characters long,"+
"and which should be at least one uppercase,at least one lowercase character,and at least one digit.");
str=k.nextLine();

if(str.length()>=5)
{
for(int i=str.length();i>=0;i--){
if((!Character.isUpperCase(str.charAt(i)))&&(!Character.isLowerCase(str.charAt(i)))&&(!Character.isDigit(str.charAt(i))))
{
System.out.println("IT IS NOT VALID .");
}
}
System.out.println("OK");
}
else
{
System.out.println("IT IS NOT VALID.");
}

}
}
展开
 我来答
我喜欢看火影ed
推荐于2016-05-17 · TA获得超过880个赞
知道小有建树答主
回答量:713
采纳率:76%
帮助的人:408万
展开全部
下标越界。
一般是由于数组的下标过大(也有可能过小),超出数组范围。
如定义int a[10]; printf("%d",a[11]);
虽然是C语言,意思是一样的。
这里a[11]就越界了。
当然,写a[10]也是不行的。
因为a[10]='\0'.会导致printf()函数一直打印,直到遇见下一个‘\0’.
百度网友3d53149
2013-12-09
知道答主
回答量:22
采纳率:0%
帮助的人:15.8万
展开全部
java中String的下标是从0开始的,如果长度是6 那么下标的取值就是0-5 取不到6
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-12-09
展开全部
长度超过范围越界了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小火炉要爆发
推荐于2018-02-28 · TA获得超过171个赞
知道小有建树答主
回答量:233
采纳率:100%
帮助的人:126万
展开全部
for(int i=str.length();i>=0;i--){//这一行

变为for(int i=str.length()-1;i>=0;i--){
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
风起雪落2009
2015-07-13 · TA获得超过1597个赞
知道大有可为答主
回答量:1743
采纳率:74%
帮助的人:396万
展开全部
第六行数组下标越界
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式