Hallo zusammen,
ich hab jetzt wieder ewig rumgerätselt, komm aber einfach nicht weiter.
In der Klasse "Generator" weise ich der der Variable "input" einen Wert zu, welcher festlegt, wie viele Zufallszahlen generiert werden sollen.
Im nächsten Schritt will ich in der "Analyzer" Klasse und der Methode "analyzer" auswerten, wie viele von welcher Zahl generiert wurden.
Mein Problem ist, das die Übergabe der Variable "input" mit der Anzahl an generierten Zufallszahlen nicht richtig an
übergeben wird, denn ich bekomme dann folgende Fehlermeldung:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 0
at Analyzer.analyzer(Analyzer.java:26)
at Main.main(Main.java:11)
Wenn ich der Variable "input" manuell einen Wert zuweise funktioniert das Programm.
Hier ist mein ganzes Programm:
[CODE lang="java" title="Main"]public class Main {
public static void main(String[] args) {
Generator genObject = new Generator();
genObject.gen();
Analyzer analyzerObject = new Analyzer();
analyzerObject.counter(genObject.getValue());
Analyzer countObject = new Analyzer();
countObject.analyzer(genObject.getValue());
}
}[/CODE]
[CODE lang="java" title="Generator"]import java.util.concurrent.ThreadLocalRandom;
import java.util.Scanner;
public class Generator {
private int[] value;
private int input = 12;
public int[] getValue() {
return value;
}
public void setInput(int input) {
this.input = input;
}
public int getInput() {
return input;
}
public void gen() {
Generator setter = new Generator();
Scanner eingabe = new Scanner(System.in);
int min = 1;
int max = 10;
System.out.println("How many random numbers should be generated?");
input = eingabe.nextInt();
setter.setInput(input);
value = new int[getInput()];
System.out.println("Following random numbers are generated:");
for (int i = 0; i < input; i++) {
int getRandomValue = ThreadLocalRandom.current().nextInt(min, max) + min;
value = getRandomValue;
System.out.print(value);
}
System.out.println("\n");
}
}
[/CODE]
[CODE lang="java" title="Analyzer"]public class Analyzer {
private Generator myGen = new Generator();
public void counter(int[] value) {
int below = 0;
int above = 0;
int adder = 1;
for (int j = 0; j < value.length; j++)
if (j < 10) {
below = below + adder;
} else if (j > 10) {
above = above + adder;
}
System.out.println("\n" + below + " of the generated values are below 10\n\n" + above + " of the generated values are above 10\n");
}
public void analyzer(int[] value) {
int counter = 0;
int[] count = new int[myGen.getInput()];
for (int i = 0; i < value.length; i++) {
int index = value;
count[index] = count[index] + 1;
}
for (int j = 0; j < value.length; j++) {
System.out.println("The Value " + counter + " excist´s " + count[j] + " times");
counter = counter + 1;
}
}
}[/CODE]
ich hab jetzt wieder ewig rumgerätselt, komm aber einfach nicht weiter.
In der Klasse "Generator" weise ich der der Variable "input" einen Wert zu, welcher festlegt, wie viele Zufallszahlen generiert werden sollen.
Java:
System.out.println("How many random numbers should be generated?");
input = eingabe.nextInt();
setter.setInput(input);
value = new int[getInput()];
Im nächsten Schritt will ich in der "Analyzer" Klasse und der Methode "analyzer" auswerten, wie viele von welcher Zahl generiert wurden.
Mein Problem ist, das die Übergabe der Variable "input" mit der Anzahl an generierten Zufallszahlen nicht richtig an
Java:
int[] count = new int[myGen.getInput()];
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 0
at Analyzer.analyzer(Analyzer.java:26)
at Main.main(Main.java:11)
Wenn ich der Variable "input" manuell einen Wert zuweise funktioniert das Programm.
Java:
private int input = 12;
Hier ist mein ganzes Programm:
[CODE lang="java" title="Main"]public class Main {
public static void main(String[] args) {
Generator genObject = new Generator();
genObject.gen();
Analyzer analyzerObject = new Analyzer();
analyzerObject.counter(genObject.getValue());
Analyzer countObject = new Analyzer();
countObject.analyzer(genObject.getValue());
}
}[/CODE]
[CODE lang="java" title="Generator"]import java.util.concurrent.ThreadLocalRandom;
import java.util.Scanner;
public class Generator {
private int[] value;
private int input = 12;
public int[] getValue() {
return value;
}
public void setInput(int input) {
this.input = input;
}
public int getInput() {
return input;
}
public void gen() {
Generator setter = new Generator();
Scanner eingabe = new Scanner(System.in);
int min = 1;
int max = 10;
System.out.println("How many random numbers should be generated?");
input = eingabe.nextInt();
setter.setInput(input);
value = new int[getInput()];
System.out.println("Following random numbers are generated:");
for (int i = 0; i < input; i++) {
int getRandomValue = ThreadLocalRandom.current().nextInt(min, max) + min;
value = getRandomValue;
System.out.print(value);
}
System.out.println("\n");
}
}
[/CODE]
[CODE lang="java" title="Analyzer"]public class Analyzer {
private Generator myGen = new Generator();
public void counter(int[] value) {
int below = 0;
int above = 0;
int adder = 1;
for (int j = 0; j < value.length; j++)
if (j < 10) {
below = below + adder;
} else if (j > 10) {
above = above + adder;
}
System.out.println("\n" + below + " of the generated values are below 10\n\n" + above + " of the generated values are above 10\n");
}
public void analyzer(int[] value) {
int counter = 0;
int[] count = new int[myGen.getInput()];
for (int i = 0; i < value.length; i++) {
int index = value;
count[index] = count[index] + 1;
}
for (int j = 0; j < value.length; j++) {
System.out.println("The Value " + counter + " excist´s " + count[j] + " times");
counter = counter + 1;
}
}
}[/CODE]