Hi,
und zwar habe ich nach der Vorgehensweise von Eratosthenes versucht, Primzahlen zu ermitteln. Leider erhalte ich immer eine Exception: "java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 20". Meiner Meinung nach verhindere ich durch die if-Anweisung die Exception.
Fehlerzeile: speicher[b-1] = 0;
Hätte jemand einen Tipp für mich?
[CODE lang="java" highlight="21"]public static void main(String[] args){
int n = 20;
int[] speicher = new int[n];
primzahlen(speicher, n);
printArray(speicher);
}
public static void primzahlen(int[] speicher, int n){
for(int i = 1; i <= speicher.length; i++){
speicher[i-1] = i;
}
for(int i = 0; i <= speicher.length - 1; i++){
if(speicher == 1){
speicher = 0;
}
int b = speicher;
do {
if((b + speicher) <= n){
b += speicher;
speicher[b-1] = 0; //Vermutlich der Fehler.
} else {
break;
}
} while(b < n);
}
}[/CODE]
und zwar habe ich nach der Vorgehensweise von Eratosthenes versucht, Primzahlen zu ermitteln. Leider erhalte ich immer eine Exception: "java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 20". Meiner Meinung nach verhindere ich durch die if-Anweisung die Exception.
Fehlerzeile: speicher[b-1] = 0;
Hätte jemand einen Tipp für mich?
[CODE lang="java" highlight="21"]public static void main(String[] args){
int n = 20;
int[] speicher = new int[n];
primzahlen(speicher, n);
printArray(speicher);
}
public static void primzahlen(int[] speicher, int n){
for(int i = 1; i <= speicher.length; i++){
speicher[i-1] = i;
}
for(int i = 0; i <= speicher.length - 1; i++){
if(speicher == 1){
speicher = 0;
}
int b = speicher;
do {
if((b + speicher) <= n){
b += speicher;
speicher[b-1] = 0; //Vermutlich der Fehler.
} else {
break;
}
} while(b < n);
}
}[/CODE]