java.lang.StringIndexOutOfBoundsException : String index out of range: 6 (in. java.lang.String)

标签 java

错误超出范围,

java.lang.StringIndexOutOfBoundsException: String index out of range: 6 (in.java.lang.String)

当我运行代码时。我试图找出两个字符串在相同位置有多少个相同的字符。

Public static void main(String[] args) {
    System.out.println(countAlike("happy","damp");
}

public static int countAlike(String a, String b) {
    int acount = a.length();
    int bcount = b.length();
    int countAlike = 0;
    for(int i = 0; i <= bcount; i++){
        for(int l = 0; l <= bcount; i++){
            if(a.substring(i,i+1).equals(b.substring(l,l+1))){
                countAlike += 1;
            }
            else{ 
            }
        }
    }
    return countAlike;
}

最佳答案

Java 中字符串字符的索引与大多数语言一样都是从 0 开始的,因此,字符串的最后一个索引实际上是 str.length() - 1 .

当您使用 <= 进行测试时,您的变量会递增,直到该值等于您的长度,这是一个超出范围的索引。

而是使用 < 进行测试对于你的两个测试。您的变量将在该字符串的最后一个字符之后停止,而不是最后一次尝试使用不存在的索引。

关于java.lang.StringIndexOutOfBoundsException : String index out of range: 6 (in. java.lang.String),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52597700/

相关文章:

java - 如何将 char 数组转换为 int 数组?

java - 为什么这个 JSON 文件数据没有正确保存到 Java 对象中?

java - 错误的 Thread.setDefaultUncaughtExceptionHandler

java - 当类从线程扩展时,如何使用 resultreceiver 发送数据

java - 主动 JDBC 按字母顺序保存数据

java - 在大规模数据上删除 java 中的重复项

java - 这个先决条件是否违反了里氏替换原则

java - 在 Spring 中将两个方法的结果缓存在一个缓存中

java - 找不到存储的图像

java - 用于将字符串添加到数组中的数组循环类不起作用