Я пишу программу для школы, которая действует как кассовый аппарат. Я запрашиваю ввод цен на товары и воспроизвожу их в продолжающемся ArrayList до тех пор, пока пользователь не введет -1 или 0. 0 означает повторный ввод предыдущей цены в случае ошибки, а -1 завершает цикл.
Я получаю
java.lang.IndexOutOfBoundsException: индекс 0 выходит за пределы длины 0
ошибка при попытке запустить код.
Мне нужно включить метод RemoveLastEntry(), который удалит последнюю цену, введенную в массив, после ввода пользователем 0. Как я могу гарантировать, что массив заполнен и я действительно удаляю последнюю запись?
Я использую Java 11 в Eclipse.
Код работает нормально без использования метода, поскольку я уменьшаю свой счетчик, и на следующей итерации цикла предыдущее местоположение массива перезаписывается, независимо от того, было оно удалено или нет. Сам метод настроен на удаление ArrayList.size()-1, чтобы удалить последнюю запись. Я пробовал это с -2 и 0, но результат все равно выходит за пределы.
Я прочитал предыдущие вопросы и обнаружил, что многие люди не заполнили массив.
Поэтому я запустил заглушку печати, чтобы убедиться, что ArrayList был правильно заполнен, и это так: когда два элемента были помещены в ArrayList, размер был равен 2. Код ошибки также увеличивается по мере того, как больше элементов я помещаю в список. код, но всегда элементы - 1 индекс за пределами предметов - длина 1
Я уверен, что совершаю ошибку новичка, но не могу его найти, и это сводит меня с ума!
для полного контекста ошибки:
Исключение в потоке «main» java.lang.IndexOutOfBoundsException: индекс 0 выходит за пределы для длины 0
в java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
на java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
на java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
в java.base/java.util.Objects.checkIndex(Objects.java:372)
в java.base/java.util.ArrayList.get(ArrayList.java:458)
в C_M_iDeaProject.main (C_M_iDeaProject.java:76)
// declare our array list which will hold our prices!
ArrayList prices = new ArrayList();
// declaring variables to terminate loop, count prices, total prices, and current entry for conditions
int counter = 0;
double entry = 0;
double total = 0;
// our loop to continuously add prices to the array list from input
while (entry != -1) {
System.out.println("Enter a price for item #" + (counter+1) + ": ");
entry = myInput.nextDouble();
// if the entry is a price we will add it to prices and continue with the loop
if (entry != 0 && entry != -1) {
prices.add(entry);
total += entry;
counter++;
}
//if the entry is 0 we will revert back to the previous iteration to re-add
else if (entry == 0.0) {
total -= prices.get(counter-1);
removeLastEntry(prices);
counter--;
}
public static void removeLastEntry(ArrayList anArrayList) {
anArrayList.remove(anArrayList.size()-1);
}
Подробнее здесь: https://stackoverflow.com/questions/554 ... or-in-java
Как исправить индекс Arraylist за пределами ошибки длины в Java ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1731733425
Anonymous
Я пишу программу для школы, которая действует как кассовый аппарат. Я запрашиваю ввод цен на товары и воспроизвожу их в продолжающемся ArrayList до тех пор, пока пользователь не введет -1 или 0. 0 означает повторный ввод предыдущей цены в случае ошибки, а -1 завершает цикл.
Я получаю
java.lang.IndexOutOfBoundsException: индекс 0 выходит за пределы длины 0
ошибка при попытке запустить код.
Мне нужно включить метод RemoveLastEntry(), который удалит последнюю цену, введенную в массив, после ввода пользователем 0. Как я могу гарантировать, что массив заполнен и я действительно удаляю последнюю запись?
Я использую Java 11 в Eclipse.
Код работает нормально без использования метода, поскольку я уменьшаю свой счетчик, и на следующей итерации цикла предыдущее местоположение массива перезаписывается, независимо от того, было оно удалено или нет. Сам метод настроен на удаление ArrayList.size()-1, чтобы удалить последнюю запись. Я пробовал это с -2 и 0, но результат все равно выходит за пределы.
Я прочитал предыдущие вопросы и обнаружил, что многие люди не заполнили массив.
Поэтому я запустил заглушку печати, чтобы убедиться, что ArrayList был правильно заполнен, и это так: когда два элемента были помещены в ArrayList, размер был равен 2. Код ошибки также увеличивается по мере того, как больше элементов я помещаю в список. код, но всегда элементы - 1 индекс за пределами предметов - длина 1
Я уверен, что совершаю ошибку новичка, но не могу его найти, и это сводит меня с ума!
для полного контекста ошибки:
Исключение в потоке «main» java.lang.IndexOutOfBoundsException: индекс 0 выходит за пределы для длины 0
в java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
на java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
на java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
в java.base/java.util.Objects.checkIndex(Objects.java:372)
в java.base/java.util.ArrayList.get(ArrayList.java:458)
в C_M_iDeaProject.main (C_M_iDeaProject.java:76)
// declare our array list which will hold our prices!
ArrayList prices = new ArrayList();
// declaring variables to terminate loop, count prices, total prices, and current entry for conditions
int counter = 0;
double entry = 0;
double total = 0;
// our loop to continuously add prices to the array list from input
while (entry != -1) {
System.out.println("Enter a price for item #" + (counter+1) + ": ");
entry = myInput.nextDouble();
// if the entry is a price we will add it to prices and continue with the loop
if (entry != 0 && entry != -1) {
prices.add(entry);
total += entry;
counter++;
}
//if the entry is 0 we will revert back to the previous iteration to re-add
else if (entry == 0.0) {
total -= prices.get(counter-1);
removeLastEntry(prices);
counter--;
}
public static void removeLastEntry(ArrayList anArrayList) {
anArrayList.remove(anArrayList.size()-1);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/55484242/how-to-correct-arraylist-index-out-of-bounds-for-length-error-in-java[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия