1

indexOfメソッドを使用して、文字列内の単語と文字の数を見つけたいと思います。

indexOf メソッドは以下を受け入れることができます:

indexOf(String s)
indexOf(Char c)
indexOf(String s, index start) 

したがって、メソッドは文字列または文字を受け入れることができ、開始点も受け入れることができます

String または Character をこのメソッドに渡すことができるようにしたいので、ジェネリックを使用しようとしました。以下のコードは、メインと 2 つの関数です。ご覧のとおり、渡す文字列または文字で indexOf を機能させたいと考えています。indexOf の 's' を文字列にキャストすると機能しますが、Char として実行しようとするとクラッシュします。よろしくお願いします!

public static void main(String[] args) {
    MyStringMethods2 msm = new MyStringMethods2();
    msm.readString();
    msm.printCounts("big", 'a');
}

public <T> void printCounts(T s, T c) {
    System.out.println("***************************************");
    System.out.println("Analyzing sentence = " + myStr);
    System.out.println("Number of '" + s + "' is " + countOccurrences(s));

    System.out.println("Number of '" + c + "' is " + countOccurrences(c));
}

public <T> int countOccurrences(T s) {
    // use indexOf and return the number of occurrences of the string or
    // char "s"
    int index = 0;
    int count = 0;
    do {
        index = myStr.indexOf(s, index); //FAILS Here
        if (index != -1) {
            index++;
            count++;
        }
    } while (index != -1);
    return count;
}
4

1 に答える 1

2

String.indexOfジェネリックを使用しません。特定のタイプのパラメータを取ります。代わりに、オーバーロードされたメソッドを使用する必要があります。したがって:

public int countOccurrences(String s) {
    ...
}

public int countOccurrences(char c) {
    return countOccurrences(String.valueOf(c));
}
于 2013-02-18T18:17:20.813 に答える