ArrayIndexOutOfBoundsException

Hanschyo

Mitglied
Ich habe ein Programm geschrieben, was 20 zufällige Zahlen ausgibt. Der User kann den Zahlenbereich bestimmen. Am Ende gibt es die größte und kleinste Zahl, den Mittelwert und die Zahl am nächsten am aus. Außerdem gibt es am Ende aus, wie oft jede Zahl vorkommt, solange der Zahlenbereich zwischen 0-1 und 0-100 liegt. Nun kriegt ich aber bei einem eher kleineren Zahlenbereich oft folgende Fehlermeldung(während das Programm schon läuft):
Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
        at Array1.main(Array1.java:60)
Ich weiß nicht, was die Fehlermeldung heißt, noch warum sie auftritt.
Hier der Code vom ganzen Programm:
Java:
/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 16.05.2018
  * @author
  */
import java.io.File;
import java.util.Scanner;
public class Array1 {
  public static void main(String[] args) {
    int k = 0;
    while (k==0) {
      System.out.println("Bitte Zahlenbereich eingeben: (0 bis deine Zahl)");
      int[] z = new int[20];
      Scanner sc = new Scanner(System.in);
      int l = sc.nextInt();
      for (int i=0;i<20 ;i++ ) {
        z[i] = (int) (Math.random()*(l+1));
      } // end of for
      int a[] = new int[l];
      int max = 0;
      int min = l;
      int summe = 0;
      for (int i=0;i<20 ;i++ ) {
        summe = summe + z[i];
        if (max<z[i]) {
          max = z[i];
        } // end of if
        if (min>z[i]) {
          min = z[i];
        } // end of if
      } // end of for
      int m = summe/20;
      int m2 = summe/20;
      while (!java.util.Arrays.toString(z).contains(Integer.toString(m)) && !java.util.Arrays.toString(z).contains(Integer.toString(m2))) {
        m++;                                                          
        m2--;
      } // end of while
      String naechste = "";
      if (java.util.Arrays.toString(z).contains(Integer.toString(m)) && java.util.Arrays.toString(z).contains(Integer.toString(m2))) {
        if (m==m2) {
          naechste = Integer.toString(m);
        } // end of if
        else {
          naechste = Integer.toString(m) + "," + Integer.toString(m2);
        } // end of if-else
      } // end of if
      else {
        if (java.util.Arrays.toString(z).contains(Integer.toString(m))) {
          naechste = Integer.toString(m);
        } // end of if
        else {
          naechste = Integer.toString(m2);
        } // end of if-else
      } // end of if-else
      for (int x=0;x<l+1 ;x++ ) {
        for (int i=0;i<20 ;i++ ) {
          if (z[i]==x) {
            a[x-1]++;
          } // end of if
        } // end of for
      } // end of for
      System.out.println("Zahlen sind " + java.util.Arrays.toString(z));
      System.out.println("Größte Zahl ist " + max);
      System.out.println("Kleinste Zahl ist " + min);
      System.out.println("Mittelwert ist " + summe/20);
      System.out.println("Nächste Zahl(en) am Mittelwert ist/sind " + naechste);
      if (l<=100) {
        System.out.println("Zahlen von 1 bis " + l + " kommen jeweils so oft vor: " + java.util.Arrays.toString(a));
      } // end of if
      System.out.println("Wollen Sie das Programm beenden?(ja/nein)");
      String f = sc.next();
      if (f.equals("ja")) {
        k++;
      } // end of if
    } // end of while
  } // end of main
} // end of class Array2
 

Neue Themen


Zurück
Oben