当前位置: 首页 > 知识库问答 >
问题:

Java-StringIndexOutOfBoundsException[重复]

魏旭
2023-03-14

首先,这里是我的代码中有问题的部分;这些都是非常基本的类

public Passenger(String Name, String adress, String number, String password){
    count++;
    accId+=count;

    this.Name=Name;

    this.adress=adress;
    this.number=number;

    if(checkPw(password)==true){
        this.password=password;
    }

}

private boolean checkPw(String password){
    int length;
    length = password.length();

    if(length != 6){
        return false;
    }
    else if(password.charAt(0)==0){
        return false;
    }
    else {
        for (int i = 0; i < password.length();i++){
            if((password.charAt(i))==(password.charAt(i+1))){
                return false;
            }
        }
    }
    return true;        
}

TestClass:

public static void main(String[] args){
    Passenger gokhan=new Passenger("Gokhan","Istanbul","xxx","254651");

    System.out.println(gokhan.password);
}

所以,我认为问题出在客舱。这是我第一次在class things(我指的是if(checkPw(password)==true)部分)中使用该类。在测试类中,它看起来非常清楚而且我从来没有想过会出现这个错误。我该如何避免这条信息呢?

完全错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
    at java.lang.String.charAt(String.java:658)
    at project1.Passenger.checkPw(Passenger.java:45)
    at project1.Passenger.<init>(Passenger.java:27)
    at project1.testClass.main(testClass.java:11)

Java结果:1

共有1个答案

孔志强
2023-03-14

问题就在这里:

for (int i = 0; i < password.length();i++){
    if((password.charAt(i))==(password.charAt(i+1))){
        return false;
    }
 }

在上一次迭代中,您试图访问String中不存在的i+1位置的char

    text
       ^
       |
when i = 3 charAt(i) will return t and charAt(i+1) will throw the exception
 类似资料:
  • 我将把字母表与您输入的字符串进行比较 当输入字符串与字母字符串匹配时,我将按照以下步骤进行操作 我不明白为什么会发生StringIndexOutOfBoundsException 问题出在哪里?

  • 很抱歉,如果问题已经被问到了,我只是得到一个抛出,尽管我的程序在第一次尝试时运行正常。我尝试更改子字符串的索引,但也不起作用。以下是抛出的完整异常: 下面是台词:

  • 问题内容: 在使方法在Java中正常工作时,我遇到了一些问题。在程序中,我创建了一个由许多不同长度的不同单词组成的数组。我正在使用的方法应该读取用户输入的字长,字母和位置,然后Java将打印出与这三个参数匹配的所有字(例如,如果用户键入了字长4,字母A和位置2,并打印出长度为4且在位置2包含字母A的单词)。 无论如何,我创建的方法如下所示: 对于某些输入,此方法很好用,但是对于其他输入,我会收到如

  • 我正在编写一个打开文本文件并检查注释的程序。然后它解析注释以检查某些单词。 im出现的错误是以下while循环检查当前行是否以空白或“/”以外的任何字符开头(如果存在非反斜杠字符),然后while循环移到下一行并再次检查。一旦while循环满足其要求并爆发,程序就会崩溃,我会得到以下输出错误。 下面是有问题的代码示例 谢谢你的帮助。我肯定这是一个简单的错误,但我就是没看到。

  • 问题内容: 当用2.4.6最小化yui时,出现此问题: java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:232 当通过我的IDE启动时,它可以工作,但是当部署到jboss时,它就不能工作。这个地方:http: //yuilibrary.com/forum/viewtopic.php?p=20086对该问题进行了一些讨论。 显然,问题出在org

  • 问题内容: 我正在编写一个打开文本文件并检查注释的程序。然后,它解析注释以检查某些单词。 错误im出现在以下while循环中,该循环检查是否当前行以空格或除’/’以外的其他字符开头,如果那里存在非反斜杠字符,则while循环移至下一行并检查再次。一旦while循环满足其要求并中断程序崩溃,我将收到以下输出错误。 这是有问题的代码示例 谢谢你的帮助。我确定这是一个简单的错误,但我只是看不到它。 问题