Hallo Leute. Ich bin Java Anfänger.
Ich habe gerade versucht, ein Programm zu schreiben, bei dem alle Primzahlen von 0 bis zur Zahl n
in einem Array gespeichert werden und dann in der Konsole ausgegeben werden.
Leider gibt mir Eclipse folgende Fehlermeldung beim Kompilieren aus:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1001
at u07.Primzahlen.siebDesEratosthenes(Primzahlen.java:42)
at u07.Primzahlen.printPrimzahlen(Primzahlen.java:16)
at u07.Primzahlen.main(Primzahlen.java:10)
Ich bin den Code schon durchgegangen, aber hab kA was ich falsch gemacht hab. Ich tippe mal
drauf, dass irgendwo versucht wird, einen Wert unter einem nicht vorhandenem Array-Index zu
speichern. Aber hab keine Ahnung :/
Bitte helft mir!
Hier ist mein Code:
Ich habe gerade versucht, ein Programm zu schreiben, bei dem alle Primzahlen von 0 bis zur Zahl n
in einem Array gespeichert werden und dann in der Konsole ausgegeben werden.
Leider gibt mir Eclipse folgende Fehlermeldung beim Kompilieren aus:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1001
at u07.Primzahlen.siebDesEratosthenes(Primzahlen.java:42)
at u07.Primzahlen.printPrimzahlen(Primzahlen.java:16)
at u07.Primzahlen.main(Primzahlen.java:10)
Ich bin den Code schon durchgegangen, aber hab kA was ich falsch gemacht hab. Ich tippe mal
drauf, dass irgendwo versucht wird, einen Wert unter einem nicht vorhandenem Array-Index zu
speichern. Aber hab keine Ahnung :/
Bitte helft mir!
Hier ist mein Code:
Java:
package u07;
public class Primzahlen {
public static void main(String[] args)
{
int n = 1000; // Zahl bis zu der alle Primzahlen aufgelistet werden sollen. Das Array hat dann folglich die Länge n+1
printPrimzahlen(n);
}
public static void printPrimzahlen(int n)
{
boolean[] booleanArray = siebDesEratosthenes(n); // Nach Aufruf dieser Methode beinahltet booleanArray die richtigen true/false Werte
int[] primZahlen = new int [n+1]; // primZahlen ist das int-Array, welche alle Primzahlen bis n beinhalten soll
for (int i=0; i<=n+1; i++)
{
if (booleanArray[i] == true) // Hier werden für alle "true"-werte des booleanArray integer mit den
{ // Werten der jeweiligen Indizes zum array primZahlen hinzugefuegt.
int k = 0;
primZahlen[k] = i;
k++;
}
}
for (int j = 0; j<=n+1; j++)
{
System.out.print(primZahlen[j]+ ", "); // Ausgabe der Primzahlen auf der Konsole
}
}
public static boolean[] siebDesEratosthenes(int n)
{
boolean[] booleanArray = new boolean[n+1]; // Erstellen
for (int x=2; x<=n+1; x++) // des
{ // Arrays
booleanArray[x]=true; // mit
} // Booleanwerten false, false, true, true, true....
for (int y=0; y<=n+1; y++) // y ist der momentane index von booleanArray.
{
if (booleanArray[y]==true) // Falls booleanArray an der Stelle y "true" ist
{
for (int z=2; z*y<=n+1; z++)
{
booleanArray[z*y] = false; // sollen alle Vielfachen von y "false" werden.
}
}
}
return booleanArray; // booleanArray beinhaltet jetzt die richtigen true/false - Werte (Prim/keine Prim)
}
}
Zuletzt bearbeitet: