很抱歉,如果这是重复的,但我看了很多答案,似乎没有任何答案适用(例如,我开始我的for循环为0,而不是一个常见的错误)。这是一种用于字谜文字游戏的方法。请帮助我,我已经连续五个小时了,我觉得我因睡眠不足而产生幻觉。
编辑:错误发生在第ugh.remove(thing.charAt(i));
行
public boolean anagramOfLetterSubset(String thing, ArrayList<Character> reference) {
ArrayList<Character> ugh = new ArrayList<Character>();
for (int h = 0; h < reference.size(); h++) {
ugh.add(reference.get(h));
}
for (int i = 0; i < thing.length(); i++) { //cycles through the letters in the word
for (int f = 0; f < reference.size(); f++) { //cycles through the characters in the reference arraylist
if ((reference.get(f) == thing.charAt(i)) && (reference.indexOf(thing.charAt(i)) != -1)) { //sees if the letter and the character match
ugh.remove(thing.charAt(i)); //removes first instance of character
}
}
}
if (ugh == reference)
return false; // change the value returned
else
return true;
}
答案 0 :(得分:2)
List
有两个remove
方法:remove(int)
,它删除给定索引处的元素;和remove(Object)
从列表中查找和删除给定对象。
如果您致电remove(thing.charAt(i))
,则参数为char
。 char
不是对象,但可以扩展为整数,因此调用remove(int)
。该字符将用于指示列表中的索引(因此例外)。
要改为呼叫remove(Object)
,请尝试
ugh.remove((Character) thing.charAt(i));