gpt4 book ai didi

java - 运行计数非重复的子str操作时获取arrayindexoutofboundsexception

转载 作者:行者123 更新时间:2023-12-03 09:05:25 25 4
gpt4 key购买 nike

我在下面的代码下运行时得到ArrayIndexOutOfBoundsException。我正在尝试计算字符串中非重复子字符串值的总数。我添加了try catch来停止此异常。通常我会进入s2[j]=s2[k];行。

public class SubStrLen2 {
public static int StrLen1(String s) {
int n = s.length();
int count=0, flag=0;
char[] s1 = s.toCharArray();
char[] s2 = s1;
// char[] s3;
for(int i=0; i<=n;i++)
{
for(int j =0;j<i; j++)
{
if(s1[i] == s2[j])
{
if(i!=j) {
flag = 1;
for(int k=j+1;k<=n;k++,j++)
{
s2[j]=s2[k];
}
break;
}
}
}
if(flag==0)
{
//s3[i]=s1[i];
count ++;
}
flag =0;
}
return count;
}

public static void main(String[] args) {
// TODO Auto-generated method stub
String sc = "GreekGods";
try {
System.out.println("Length of the Sub str"+ StrLen1(sc));
}catch(ArrayIndexOutOfBoundsException e) {
System.out.println("Error in Array");
}

}
}

最佳答案

有很多观察,以0开头的循环索引应以总长度-1 结束,因此,如果n是您的Array长度,则代码应为

  for(int i=0; i<n;i++)

同样的问题在
for(int k=j+1;k<=n;k++,j++)

在这里,您不仅在使用 = 符号,这将导致ArrayIndexOutOfBoundsException,而且您还在 递增j ,除非有意为之,否则它是父循环的一部分,您可能无法获得预期的结果。

关于java - 运行计数非重复的子str操作时获取arrayindexoutofboundsexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58723256/

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