3

基本的に、ユーザーは 2 つの文字列 ( CATSATONTHEMAT AT ) を入力し、2 番目の文字列が最初の文字列に表示される回数をカウントする必要があります (したがって、ここでの答えは 3 です)

これは私がこれまでに持っているものであり、それは言い続けています

「スレッド "main" での例外 java.lang.StringIndexOutOfBoundsException: 範囲外の文字列インデックス: 81223 at java.lang.String.substring(Unknown Source) at practice.main(practice.java:60)」

どんな助けでも大歓迎です!どこで間違ったのかを見つけることができません

    String s = scan.next(); // CATSATONTHEMAT
    String t = scan.next(); // AT

    int j= 0;

    for ( int i = 0 ; i < s.length(); i++){
        int k = t.length();
        String newstring = s.substring(i,i+k); // I printed this and the substring works so the if statement might not be working..

        if(newstring.equals(t))
            j++;   // if the new substring equal "AT" then add 1
        }

    System.out.printf("%d", j);  // suppose to print just 3
4

3 に答える 3

0

beginIndex が負の場合、または
endIndex がこの String オブジェクトの長さより大きい場合、IndexOutOfBoundsException が発生します。

または beginIndex が endIndex より大きい。

以下の行では、ループが 0 から s.length まで実行されているため、この問題が発生しますが、0 から s.length-t.length まで実行する必要があります。

String newstring = s.substring(i,i+k);
于 2012-09-07T00:40:03.220 に答える