anagram에 대한 런타임 오류-스레드 "main"의 예외 java.lang.StringIndexOutOfBoundsException : 문자열 색인이 범위를 벗어남 : -1

coder101

이 질문을 해결하려고 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 : String index out of range : -1 at java.lang.String.substring (String.java:1911) at Anagram.main (Anagram.java:26)에서 항상이 오류 예외가 발생합니다. )

나는 내가 부분 문자열에 대한 정확한 색인을 선택하지 않는다는 것을 알고 있지만 괜찮아 보였습니다.

산딥 미탈

하위 문자열 색인은 다음과 같아야합니다. String input1 = input.substring (0, q); 문자열 input2 = input.substring (q, x); 두 번째 매개 변수 (종료 색인)가 포함되지 않기 때문입니다. 또한 내 테스트에 따르면 StringIndexOutOfBoundsException이 발생하는 유일한 경우는 빈 문자열 ( "")로 테스트 할 때입니다. 그러나 내가 언급 한 변경 후에는 그 오류가 발생하지 않을 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관