对于我的CompSci
班级,我们正在制作你愿意吗?我们的聊天机器人项目的功能。该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 是“或”)它抛出这个异常:
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
数组的计数器有关,但到目前为止我修复它的尝试无济于事。
有什么帮助吗?