これは、連続する重複を削除する必要がある私のコードです。再帰呼び出しのIndexOutOfBoundsException
パッケージPractice.Practice;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class RemoveConsecutiveDuplicates {
private static int i=1;
public static List<String> detectDuplicates(List<String> chars) {
if(i>chars.size())
return chars;
while(chars.get(i-1).equals(chars.get(i))) {
chars.remove(i);
}
i++;
return detectDuplicates(chars);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
List<String> chars = new ArrayList<String>(Arrays.asList(str.split("")));
System.out.println(detectDuplicates(chars));
}
}
入力 "asssddaaffgff"に対して例外がスローされました。 asssddaaffgffスレッドで
例外 "メイン" java.lang.IndexOutOfBoundsException: インデックス:7、サイズ:7 java.utilの でここ
がスローされた例外です。 実践でPractice.Practice.RemoveConsecutiveDuplicates.detectDuplicates(RemoveConsecutiveDuplicates.java:13) でjava.util.ArrayList.get(ArrayList.java:429)でArrayList.rangeCheck(ArrayList.java:653)。 実践でPractice.Practice.RemoveConsecutiveDuplicates.detectDuplicates(RemoveConsecutiveDuplicates.java:17) でPractice.Practice.RemoveConsecutiveDuplicates.detectDuplicates(RemoveConsecutiveDuplicates.java:17) でPractice.RemoveConsecutiveDuplicates.detectDuplicates(RemoveConsecutiveDuplicates.java:17) でPractice.Practice.RemoveConsecutiveDuplicates.detectDuplicates(RemoveConsecutiveDuplicates.java:17) でPractice.Practice.RemoveConsecutiveDuplicates.detectDuplicates(RemoveConsecutiveDuplicates.java:17) で.Practice.RemoveConsecutiveDuplicates.detectDuplicates(RemoveConsecutiveDuplicates.java:17) Pあなたは1を削除するとractice.Practice.RemoveConsecutiveDuplicates.main(RemoveConsecutiveDuplicates.java:26)
'場合(I> = chars.size())' - 簡単な変更? –