So korrigieren Sie einen außerhalb der Grenzen liegenden Arraylist-Index aufgrund eines Längenfehlers in JavaJava

Java-Forum
Anonymous
 So korrigieren Sie einen außerhalb der Grenzen liegenden Arraylist-Index aufgrund eines Längenfehlers in Java

Post by Anonymous »

Ich schreibe ein Programm für die Schule, das als Registrierkasse fungiert. Ich frage nach Eingaben für Preise von Artikeln und spiele sie in eine laufende ArrayList ein, bis der Benutzer -1 oder 0 eingibt. 0 bedeutet, im Falle eines Fehlers den vorherigen Preis erneut einzugeben, und -1 beendet die Schleife.

Ich erhalte die


java.lang.IndexOutOfBoundsException: Index 0 außerhalb der Grenzen für Länge 0


Fehler, wenn ich versuche, meinen Code auszuführen.
Ich muss eine Methode namens „removeLastEntry()“ einbinden, die den zuletzt in das Array eingegebenen Preis entfernt, wenn der Benutzer eine 0 eingibt. Wie kann ich sicherstellen, dass das Array gefüllt ist und ich tatsächlich den letzten Eintrag entferne?

Ich verwende Java 11 in Eclipse.

Der Code läuft einwandfrei, ohne dass die Methode verwendet wird, da ich meinen Zähler reduziere und in der nächsten Iteration der Schleife die vorherige Array-Position überschrieben wird, unabhängig davon, ob sie entfernt wurde oder nicht. Die Methode selbst ist so eingestellt, dass sie ArrayList.size()-1 entfernt, sodass der letzte Eintrag entfernt wird. Ich habe es mit -2 und 0 versucht, und es liegt immer noch außerhalb der Grenzen.

Ich habe frühere Fragen gelesen und viele Leute hatten das Array nicht gefüllt.
Also habe ich einen Druck-Stub ausgeführt, um sicherzustellen, dass die ArrayList ordnungsgemäß gefüllt wurde, und das war so: Als zwei Elemente in die ArrayList eingefügt wurden, war die Größe gleich 2. Der Fehlercode steigt auch, je mehr Elemente ich in den Code einfüge, ist aber immer Elemente – 1 Index aus Grenzen bei Elementen – 1 Länge
Ich bin mir sicher, dass ich einen Anfängerfehler mache, aber ich kann ihn nicht finden und er macht mich wahnsinnig!

für den vollständigen Fehlerkontext:


Ausnahme im Thread „main“ java.lang.IndexOutOfBoundsException: Index 0 außerhalb der Grenzen für Länge 0
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
unter java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
unter java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
unter java.base/java.util.Objects.checkIndex(Objects.java:372)
bei java.base/java.util.ArrayList.get(ArrayList.java:458)
bei C_M_iDeaProject.main(C_M_iDeaProject.java:76)

Code: Select all

// 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);
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post