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);
}
Mobile version