Я пытаюсь написать код lz78 в качестве школьного проекта, но продолжаю получать эту ошибку:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 20, Size: 20
Вот код:
public class LZ88 {
ArrayList input = new ArrayList();
ArrayList stored = new ArrayList();
Iterator counter = input.iterator();
int count=0;
int lz78(String x)
{
int length=x.length();
for(int i=0;i<x.length();i++)
{
input.add(x.charAt(i));
}
for(int i=0;i<=input.size(); i++)
{
if (stored.contains(input.get(i))==true)
{
String str ;
StringBuilder sb = new StringBuilder();
sb.append(input.get(i));
sb.append(input.get(++i));
str=sb.toString();
while(stored.contains(str)==true)
{
sb.append(input.get(++i));
str=sb.toString();
}
stored.add(str);
System.out.println(stored);
}
else
{
stored.add(x.charAt(i));
System.out.println(stored);
}
}
return 0;
}
public static void main(String[] args) {
String x = "abaababaababbbbbbbba";
LZ88 ob = new LZ88();
ob.lz78(x);
}
}
Нет смысла сравнивать логическое значение с истиной, как это делаете вы. Какова бы ни была его ценность на самом деле, неважно, сравниваете вы ее или нет. например if (stored.contains(input.get(i))==true) функционально идентичен if (stored.contains(input.get(i)))




Заменить for(int i=0;i<=input.size(); i++) на for(int i=0;i<input.size(); i++)
@Mohamed Mamdoh Если мой ответ соответствует вашему вопросу, пожалуйста, примите ответ, щелкнув пустую галочку рядом с моим ответом, которая находится чуть ниже стрелки VoteDown, чтобы галочка стала зеленой. Как принять: meta.stackexchange.com/questions/5234/…
В какой строке возникает эта ошибка? Что такое трассировка стека? Пожалуйста, редактировать свой ответ и добавьте трассировку стека.