[Java] Boolean / Schleifen-Problem

el guapo

Lt. Commander
Registriert
Feb. 2002
Beiträge
1.325
Zuerst der Quelltext, das Programm soll Primzahlen berechnen:

Code:
public class Primzahl {
  static final int UNTERE_GRENZE = 49;
  static final int OBERE_GRENZE = 50;

  public Primzahl() {
  }

  public static void main(String[] args) {
    int testzahl = UNTERE_GRENZE;
    if (testzahl == 1) {
      testzahl = 2;
    }
    int teiler = 2;
    System.out.println();
    while (testzahl < OBERE_GRENZE) {
      boolean primzahl = true;
      while ((teiler <= (testzahl / 2)) & (primzahl = true)) {
        if (testzahl % teiler != 0) {
          teiler = teiler + 1;
        }
        else {
          primzahl = false;
        }
      }
      if (primzahl = true) {
        System.out.println((testzahl));
    }
    testzahl = testzahl + 1;
    teiler = 2;
    }
  }
}

Mein Problem tritt genau hier

Code:
        else {
          primzahl = false;
        }

auf: warum wird die while-Schleife nicht verlassen? primzahl wird durch das else auf false gesetzt, und primzahl ist eine Bedingung für die while-Schleife.

Bitte nicht über den Startwert wundern, der dient Testzwecken, da das Programm ürsprünglich die eingegebenen Grenzen nicht genau beachtet hat (daher jetzt die boolean-Abfrage bei der Ausgabe).

Edit Steffen: Bitte das nächste mal gebrauch der Code-Tags machen!
 
Zuletzt bearbeitet von einem Moderator:
primzahl = true ist eine Zuweisung und ergibt immer true

richtig lautet es: primzahl == true als Vergleich

PS: scheint also "nur" ein Tippfehler zu sein ;)
 
ja, es funktioniert, danke

macht das überhaupt sinn, in einer if-bedingung eine anweisubg zu schreiben? mir fällt gerade nichts dazu ein

@ steffen
ja, mach ich :)
 
Zurück
Oben