java.lang.IndexOutOfBoundsException: Index: 3, Size: 3

Ich immer

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at hartman.ShortestString.printShortestString(ShortestString.java:40)
at hartman.ShortestString.main(ShortestString.java:28)

Wie kann ich dieses Problem beheben?

package hartman;

import java.util.ArrayList;
import java.util.Scanner;

public class ShortestString {

    public static void main(String[] args) {
        System.out.printf("WELCOME TO SHORTEST STRING\n\n");
        System.out.printf("Type \".\" when done entering data.\n\n");

        ArrayList<String> myArray = new ArrayList<>();
        Scanner keyboard = new Scanner(System.in);
        boolean keepAsking = true;

        while (keepAsking) {
            System.out.printf("Enter string: ");
            String userInput = keyboard.nextLine();

            if (userInput.equals(".")) {
                keepAsking = false;
            } else {
                myArray.add(userInput);
            }
        }

        printShortestString(myArray);
        System.out.printf("\n\nGOODBYE!\n");
        keyboard.close();
    }

    public static void printShortestString(ArrayList<String> myArray) {

        int index;
        int index1 = 1;

        for (index = 0; index < myArray.get(index).length(); index++) {
            if (myArray.get(index).length() < myArray.get(index1).length()) {
                System.out.printf("\nShortest string is \"%s\" with length %d",
                        myArray.get(index), myArray.get(index).length());
            } else {
                index1++;
            }
        }
        return;
    }
}
Die Titel der post widerspiegeln sollte, das Problem
Kannst du uns die Zeile 40 ist?
Sollte for (index = 0; index < myArray.get(index).length(); index++) { werden for (index = 0; index < myArray.get(index1).length(); index++) {? Du bist der Inkrementierung durch ein array und mit dem counter beim Vergleich und es verursacht Probleme.
40 ist for (index = 0; index < myArray.get(index).length(); index++) {
Sie sind also die Schleife durch alle Saiten, bis Sie ein, die Länge ist nicht größer als der index, dass es gefunden wird? Das ist definitiv nicht klingen wie die richtige Logik.

InformationsquelleAutor Xyphoris | 2014-04-02

Schreibe einen Kommentar