Wie überwinde ich java.lang.ArrayIndexOutOfBoundsException: 2 in diesem code?

Wenn ich getestet habe, dieser code, es gab mir java.lang.ArrayIndexOutOfBoundsException: 2
Der code ist noch nicht fertig aber das ist, was ich versuche zu tun:
Ein Programm, das den Anwender auffordert, zwei zahlen. Drucken Sie alle zahlen von der kleineren
Anzahl der größeren Zahl (inclusive) in zufälliger Reihenfolge. Mit dieser bestellen, finden Sie die
größte Summe von 2 zahlen nebeneinander.
Könnte mal bitte zeigen Sie mir, was repariert werden muss und wie man es beheben? Danke.

 boolean isNum = false;
    int in1 = 0;
    int in2 = 0;
    int size = 0;
    int largestsum = 0;
    while (!isNum) {
        try {
            System.out.print("Enter a number: ");
            in1 = Integer.parseInt(in.readLine());
            boolean isSame = false;
            while (!isSame) {
                System.out.print("Enter a number: ");
                try {
                    in2 = Integer.parseInt(in.readLine());
                    if (in1 != in2) {
                        isSame = true;
                    } else {
                        System.out.println("Same number.");
                    }
                } catch (NumberFormatException nfe) {
                    System.out.println("Not a number.");
                }
            }
            isNum = true;
        } catch (NumberFormatException nfe) { //catches error
            System.out.println("Not a number."); //informs user of the error
        }
    }
    if (in1 > in2) {
        size = in1 - in2 + 1;
        int[] num = new int[size];
        for (int i = 0; i < size; i++) {
            num[i] = in2 + i;
        }
        int[] order = new int[size];
        boolean[] used = new boolean[size];
        for (int i = 0; i < size; i++) {
            int r = (int) ((size) * (Math.random()));
            while (used[r]) {
                r = (int) ((size) * Math.random());
            }
            order[i] = r; //fill array
            used[r] = true; //r is now used
        }
        for (int i = 0; i < size; i++) {
            if (num[order[i]] + num[order[i + 1]] > largestsum) {
                largestsum = num[order[i]] + num[order[i + 1]];
            }
        }
InformationsquelleAutor user1215225 | 2012-03-24
Schreibe einen Kommentar