[英]My program has a runtime error: exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: 27
[英]Runtime Error for an anagram - Exception in thread “main” java.lang.StringIndexOutOfBoundsException: String index out of range: -1
我正在嘗試解決此問題https://www.hackerrank.com/challenges/anagram ,這是我的代碼
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Anagram {
public static void main(String[] args)
{
Scanner reader = new Scanner(System.in);
int t = reader.nextInt();
while((t--)>0)
{
String input = reader.nextLine();
if((input.length())%2 == 1)
System.out.println(-1);
else
{
int x = input.length();
int q = (int)(Math.floor((x/2)));
String input1 = input.substring(0,q-1);
int [] count1 = new int[26];
for( int i = 0; i < input1.length(); i++ )
{
char ch1 = input1.charAt(i);
count1[ch1-'a']++;
}
String input2 = input.substring(q,x-1);
int [] count2 = new int[26];
for( int i = 0; i < input2.length(); i++ )
{
char ch2 = input2.charAt(i);
count2[ch2-'a']++;
}
int count =0;
for(int j=0;j<26;j++)
{
count = count + Math.abs(count1[j]-count2[j]);
}
System.out.println(count/2);
}
}
}
}
我總是在線程“ main”中收到此錯誤異常。java.lang.StringIndexOutOfBoundsException:字符串索引超出范圍:Anagram.main(Anagram.java:26在java.lang.String.substring(String.java:1911)-1 )
我知道我沒有為子字符串選擇正確的索引,但看起來還不錯,誰能幫我
您的子字符串索引應如下所示:字符串input1 = input.substring(0,q); 字符串輸入2 = input.substring(q,x); 這是因為第二個參數(結束索引)不包含在內。 另外,根據我的測試,唯一獲得StringIndexOutOfBoundsException的時間是當我使用空string(“”)進行測試時。 但是,在我提到更改之后,您甚至都不會收到該錯誤。
您的子字符串超出限制,例如變為-1,但是不存在,請嘗試更改該部分
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.