gpt4 book ai didi

java - 是什么导致了 ArrayIndexOutOfBoundsException?

转载 作者:行者123 更新时间:2023-12-01 18:43:31 25 4
gpt4 key购买 nike

    //Palindrone from a String
public class Palindrome {
static int track = 0;
public static void main(String args[]){
String str = "abcicbbcdefggfed ";
char[] charArray = str.toCharArray();
Palindrome p1 = new Palindrome();
p1.find_palindrome(charArray);
}
void find_palindrome(char[] ch){
for(int i=0; i< ch.length; i++){
if(ch[i] == ch[i+1]){
checkPalindrome(ch, i, i+1);
}
else{
checkPalindrome(ch,i-1,i+1);
}
}
}
void checkPalindrome(char[] c, int left, int right){
int count=0,l=0,r=0;
while(left >= 0 && right <= c.length){
while(c[left] == c[right]){
left--;
right++;
count = count + 1;
}
break;
}
if(count > track){
track = count;
l = left;
r = right;
}
if(count>1){
for (int j=left+1;j<=right-1;j++){
System.out.println(c[j]);
}
System.out.println("--");
}
}
}

我看到给定的异常错误,但我不知道如何解决。我知道这是初学者的问题,因此解释以及您的答案确实会有所帮助。

编辑:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 17
at Palindrome.find_palindrome(Palindrome.java:14)
at Palindrome.main(Palindrome.java:8)

最佳答案

在 Java(和大多数语言)中,数组是从零开始的。这意味着,如果您有一个大小为 N 的数组,那么索引将从 0 ... N - 1 开始。

您的问题在这里:

for(int i=0; i< ch.length; i++){
if(ch[i] == ch[i+1])

i = ch.length - 1时会发生什么? i + 1 会是什么?

假设 ch.length 为 10,表示索引从 09,则 ch.length - 1 9,但 i + 110,这是越界的。

关于java - 是什么导致了 ArrayIndexOutOfBoundsException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18940843/

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