Array rückwärts auslesen funktioniert nicht

Hallo1234

Bekanntes Mitglied
Hallo, ich möchte einen Array rückwärts auslesen, aber mir wird jedes Mal eine OutOfBounds Exception ausgegeben. Warum?
Java:
import java.util.Scanner;
public class MinimaleDistanz {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Geben Sie 6 Zahlen ein: ");
        int[] zahlen = new int[6];
        for(int i=0; i<zahlen.length; i++) {
            System.out.print("Zahl "+(i+1)+": ");
            zahlen[i] = s.nextInt();
        }
        for(int i=0; i<zahlen.length; i++) {
            //System.out.print(zahlen[i]+" "+"\n");
        }
        int[] berechne = new int[5];
        for(int i=zahlen.length-1; i>=0; i--) {
            berechne[i] = zahlen[i+1]-zahlen[i];
            System.out.print(berechne[i]+" "+"\n");
        }
        int temp = 0;

        for(int i=0; i<berechne.length; i++) {
            for(int j=0; j<berechne.length-1; j++) {
                if(berechne[j]>berechne[j+1]) {
                    temp = berechne[j];
                    berechne[j] = berechne[j+1];
                    berechne[j+1] = temp;
                }
            }
        }
        for(int i=berechne.length-1; i>=0; i--) {
            System.out.print(berechne[i]+" ");
        }
    }
}
Vielen Dank 🙂
 
zahlen hat eine Länge von 6
berechne hat eine Länge von 5.
zahlen.length-1 ist also nicht kleiner als berechne.length
Deshalb OOB.
 
Was auch immer du machst, so ginge es:
Java:
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("Geben Sie 6 Zahlen ein: ");
        int[] zahlen = new int[6];
        for (int i = 0; i < zahlen.length; i++) {
            System.out.print("Zahl " + (i + 1) + ": ");
            zahlen[i] = s.nextInt();
        }
        for (int i = 0; i < zahlen.length; i++) {
            System.out.print(zahlen[i] + " ");
        }
        System.out.println();

        int[] berechne = new int[5];
        for (int i = berechne.length - 1; i >= 0; i--) {
            berechne[i] = zahlen[i + 1] - zahlen[i];
            System.out.print(berechne[i] + " ");
        }
        System.out.println();

        int temp = 0;
        for (int i = 0; i < berechne.length; i++) {
            for (int j = 0; j < berechne.length - 1; j++) {
                if (berechne[j] > berechne[j + 1]) {
                    temp = berechne[j];
                    berechne[j] = berechne[j + 1];
                    berechne[j + 1] = temp;
                }
            }
        }
        for (int i = berechne.length - 1; i >= 0; i--) {
            System.out.print(berechne[i] + " ");
        }
        System.out.println();
    }
 

Neue Themen


Zurück
Oben