Я вижу две серьезные проблемы в вашем коде:
- Поскольку следующая строка пытается получить доступ к значению по индексу
i + 1
, for
l oop должно быть for (int i = 0; i < list.get(j).size() - 1; i = +2)
чтобы избежать IndexOutOfBoundsException
. В вашем коде это, for (int i = 0; i < list.get(j).size(); i = +2)
.
String y = list.get(j).get(i+1);
В следующей строке вы не обрабатываете исключения для случаев, когда пользователь вводит нецелое значение.
result = Integer.valueOf(scan.nextLine());
Это должно быть похоже на
boolean valid;
do {
valid = true;
try {
result = Integer.parseInt(scan.nextLine());
} catch (NumberFormatException e) {
System.out.println("This is not an integer. Please try again.");
valid = false;
}
} while (!valid);
Помимо этих двух серьезных проблем, вторая строка в следующем фрагменте кода не имеет смысла, так как в новом добавленном внутреннем списке нет элементов для очистки
list.add(j + 1, new ArrayList<String>() {});// add another inner list to biglist
list.get(j+1).clear();//clears the new inner list