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):
Ich weiß nicht, was die Fehlermeldung heißt, noch warum sie auftritt.
Hier der Code vom ganzen Programm:
Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at Array1.main(Array1.java:60)
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