Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Mein Programm, das auf Eingabe einer Zahl genau diese Anzahl von Primzahlen ausgeben sollte, macht nicht, was es soll. Wenn ich 4 eingebe, gibt es nicht 2, 3, 5, 7 aus, sondern 0, 0, 0, 0. Wisst ihr was falsch ist?
package yt_brotcr_15ff;
import java.util.Scanner;
public class yt_brotcr_19_Schmierzettel2 {
public static void main(String[] args) {
int anzahl;
Scanner scan = new Scanner(System.in);
anzahl = scan.nextInt();
int [] AnzahlPrimzahlen = PrimzahlArray (anzahl);
for (int i = 0; i<anzahl; i++) {
System.out.println(AnzahlPrimzahlen);
}
}
public static int[] PrimzahlArray (int anzahl) {
int primzzähl =0;
int x = 1;
int[] primz = new int[anzahl];
boolean xistprim;
int y = 2;
// Weist zu jedem Index primzzähl von 0 bis anzahl
// dem Arrayelement primz[primzzähl] die primzzähl-te Primzahl zu
// so dass dadurch das Array int[anzahl] primz erntsteht.
while (true) {
if (x < 2) {
xistprim = false;
break;
}
if (x == 2) {
xistprim = true;
break;
}
else {
// Folgendes guckt, für jede Zahl x, ob sie eine Primzahl ist
// Wenn ja, so ist "xistprim" true, wenn nein, so ist es false
while (true) {
if (x%y == 0) {
xistprim = false;
break;
}
else {
if (y == x-1) {
xistprim = true;
break;
}
y++;
}
}
}
if (xistprim) {
primz[primzzähl] = x;
}
if (primzzähl == anzahl-1) {
break;
}
primzzähl++;
}
Am besten stellst du den Quelltext noch einmal in Code-Tags neu in's Forum (z.B. über den Button Einfügen>Code>Java). So wird sich das kaum jemand ansehen wollen und es wird vermutlich auch verfälscht dargestellt.
package yt_brotcr_15ff;
import java.util.Scanner;
public class yt_brotcr_19_Schmierzettel2 {
public static void main(String[] args) {
int anzahl;
Scanner scan = new Scanner(System.in);
anzahl = scan.nextInt();
int[] AnzahlPrimzahlen = PrimzahlArray(anzahl);
for (int i = 0; i < anzahl; i++) {
System.out.println(AnzahlPrimzahlen);
}
}
public static int[] PrimzahlArray(int anzahl) {
int primzzähl = 0;
int x = 1;
int[] primz = new int[anzahl];
boolean xistprim;
int y = 2;
// Weist zu jedem Index primzzähl von 0 bis anzahl
// dem Arrayelement primz[primzzähl] die primzzähl-te Primzahl zu
// so dass dadurch das Array int[anzahl] primz erntsteht.
while (true) {
if (x < 2) {
xistprim = false;
break;
}
if (x == 2) {
xistprim = true;
break;
}
else {
// Folgendes guckt, für jede Zahl x, ob sie eine Primzahl ist
// Wenn ja, so ist "xistprim" true, wenn nein, so ist es false
while (true) {
if (x % y == 0) {
xistprim = false;
break;
} else {
if (y == x - 1) {
xistprim = true;
break;
}
y++;
}
}
}
if (xistprim) {
primz[primzzähl] = x;
}
if (primzzähl == anzahl - 1) {
break;
}
primzzähl++;
}
x++;
return primz;
}
}
package yt_brotcr_15ff;
import java.util.Scanner;
public class yt_brotcr_19_Schmierzettel2 {
public static void main(String[] args) {
int anzahl;
Scanner scan = new Scanner(System.in);
anzahl = scan.nextInt();
int [] AnzahlPrimzahlen = PrimzahlArray (anzahl);
for (int i = 0; i<anzahl; i++) {
System.out.println(AnzahlPrimzahlen[i]);
}
}
public static int[] PrimzahlArray (int anzahl) {
int primzzähl =0;
int x = 1;
int[] primz = new int[anzahl];
boolean xistprim;
int y = 2;
// Weist zu jedem Index primzzähl von 0 bis anzahl
// dem Arrayelement primz[primzzähl] die primzzähl-te Primzahl zu
// so dass dadurch das Array int[anzahl] primz erntsteht.
while (true) {
if (x < 2) {
xistprim = false;
break;
}
if (x == 2) {
xistprim = true;
break;
}
else {
// Folgendes guckt, für jede Zahl x, ob sie eine Primzahl ist
// Wenn ja, so ist "xistprim" true, wenn nein, so ist es false
while (true) {
if (x%y == 0) {
xistprim = false;
break;
}
else {
if (y == x-1) {
xistprim = true;
break;
}
y++;
}
}
}
if (xistprim) {
primz[primzzähl] = x;
}
if (primzzähl == anzahl-1) {
break;
}
primzzähl++;
}
x++;
return primz;
}
}
Bei mir gibt er weiterhin Nullen aus. Und zwar immer ganausoviele wie die Zahl, die ich eingebe.
Das liegt daran, dass [i] als kursiv interpretiert wird. Deshalb fehlt es jetzt auch in deiner Erklärung. Bei Verwendung von Code-Tags passiert das nicht und wenn du es im normalen Text darstellen willst, kannst du es so in plain-Tags klammern: [plain][i][/plain].
Dein Programm macht im Moment fast gar nichts, weil es bereits bei der ersten Schleifen-Iteration abbricht, denn x ist ja kleiner als 2. Da sind aber noch mehr Fehler. Vielleicht ist es einfacher, es in zwei Schritten zu machen und zunächst nur eine Methode zu schreiben, die für eine gegebene Zahl prüft, ob sie eine Primzahl ist. Die Methode kannst du dann schon einzeln testen und danach benutzen, um den Rest zu programmieren.