私のCompSci
クラスでは、Would You Right?を作成しています。チャットボット プロジェクトの関数。このString.split()
方法はこれでうまく機能しますが、それなしで実行できればボーナスポイントを獲得できます. レプリケートするメソッドを作成するだけで、これを行うことにしましたString.split
。
private String[] separate (String phrase, String omit1, String omit2)
{
int c = 0;
//gets rid of leading and trailing whitespace, replaces target characters
//with the # character
phrase = phrase.trim();
phrase = phrase.replace(omit1, "#");
phrase = phrase.replace(omit2, "#");
//detects the number of phrases to be included in the array
for (int i = 0; i < phrase.length(); i++)
if (phrase.charAt(i) == '#')
c++;
//creates array list based on number of phrases
String[] phraseList = new String[c];
c = 0;
//builds phrases from characters found between occurrences
//of the # character
for (int i = 0; i < phrase.length(); i++)
{
if (phrase.charAt(i) == '#')
c++;
else if (phrase.charAt(i) != '#')
phraseList[c] += phrase.charAt(i);
}
return phraseList;
}
「お茶を飲むか、クッキーを食べるか、腕立て伏せをするか」というフレーズでこの方法を使用するときはいつでも。(omit1 は "," であり、omit2 は "or" である)、次の例外がスローされます。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at Magpie.separate(Magpie.java:306)
at Magpie.getResponse(Magpie.java:44)
at MagpieRunner.main(MagpieRunner.java:24)
これは配列のカウンターと関係があることを認識していますが、phraseList
これを修正しようとしてもこれまでのところ役に立ちませんでした。
ヘルプはありますか?