字谜的运行时错误 - 线程异常 "main" java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1
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 中的异常:字符串索引超出范围:-1
在 java.lang.String.substring(String.java:1911)
在 Anagram.main(Anagram.java:26)
我知道我没有为子字符串选择正确的索引,但它看起来不错,谁能帮助我
您的子字符串超出限制,例如变为 -1,但它不存在尝试更改该部分
您的子字符串索引应如下所示:
字符串输入 1 = input.substring(0,q);
字符串 input2 = input.substring(q,x);
这是因为第二个参数(结束索引)不包含在内。
此外,根据我的测试,我唯一一次获得 StringIndexOutOfBoundsException 是在我使用空字符串 ("") 进行测试时。但是在我提到的更改之后,你甚至不会得到那个错误。
我正在尝试解决这个问题 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 中的异常:字符串索引超出范围:-1 在 java.lang.String.substring(String.java:1911) 在 Anagram.main(Anagram.java:26)
我知道我没有为子字符串选择正确的索引,但它看起来不错,谁能帮助我
您的子字符串超出限制,例如变为 -1,但它不存在尝试更改该部分
您的子字符串索引应如下所示: 字符串输入 1 = input.substring(0,q); 字符串 input2 = input.substring(q,x); 这是因为第二个参数(结束索引)不包含在内。 此外,根据我的测试,我唯一一次获得 StringIndexOutOfBoundsException 是在我使用空字符串 ("") 进行测试时。但是在我提到的更改之后,你甚至不会得到那个错误。