Warum terminiert mein Programm nicht?

Nummer11

Mitglied
Hi,

ich habe ein Programm geschrieben, was die ersten 100 Primzahlen ausgeben soll. Bzw. sollte ich besser sagen, dass ich es versucht habe zu schreiben. Ich hab nämlich das Problem, dass es nicht terminiert und ich weiss nicht warum... Ich hoffe jemand hier kann mit weiterhelfen.

PS: Ich habe bereits eine Lösung zu der Aufgabe, jedoch ist der Ansatz ein etwas anders. Deswegen versuche ich das auf "meine Weise" zu machen.
 

Anhänge

  • Primzahlen bis 100.txt
    468 Bytes · Aufrufe: 6

mrBrown

Super-Moderator
Mitarbeiter
Java:
int zahl = 1;
        int grenze = zahl / 2;
        int teiler = 2;
        int rest;
        int y = 0;

        while (y != 100) {
            while (teiler <= grenze) {
                rest = zahl % teiler;
                teiler++;
                if (rest != 0 && teiler == grenze) {
                    System.out.print(zahl);
                    y++;
                }


            }
            zahl++;  // das zahl++; befindet sich nicht mehr in der inneren while schleife

        }

Dein teiler ist 2 und deine grenze ist 0, daher gilt niemals, dass teiler <= grenze , y kann also niemals erhöht werden
 

Meniskusschaden

Top Contributor
Dann müsste der Code aber theoretisch funktionieren, wenn ich z.B "zahl=13" definiere, oder nicht? Dann wäre ja "teiler" kleiner als "grenze". Er funktioniert aber auch dann nicht.
In dem Fall gilt irgendwann teiler==7 und grenze==6 und die innere Schleife wird nicht mehr betreten. Das Inkrementieren von zahl in der äußeren Schleife ändert daran nichts, weil es weder Einfluß auf teiler noch auf grenze hat.
 

Nummer11

Mitglied
Aber die innere Schleife soll ja dann auch nicht mehr ausgeführt werden, wenn der teiler größer als grenze ist. Dann hat man ja alle Teiler geprüft und wenn bis dahin kein mal die if-Bedingung erfüllt war, haben wir keine Primzahl.
So verstehe ich den Code. :/
Mir ist noch etwas aufgefallen, was ich jetzt geändert habe. Nämlich für den Fall, dass rest=0 ist kann man direkt zur nächsten Zahl, da es dann sicherlich keine Primzahl mehr ist.

Das löst aber leider immer noch nicht mein Problem. Kannst du mir vllt nen Tipp geben, was ich ändern könnte?
Ich weiß ehrlich gesagt garnicht ob der Ansatz den ich hab ganz gut ist oder ob ich komplett auf dem Holzweg bin. :/


Java:
public class Ausgabe {

    public static void main(String[] args) {
                int zahl =1;
                int grenze = zahl / 2;
                int teiler = 2;
                int rest;
                int y = 0;
             
                while (y!=100){
                    while (teiler <= grenze) {
                    rest = zahl % teiler;
                    teiler++;
                        if ( rest!=0 && teiler == grenze) {
                            System.out.print(zahl);
                            y++;}
                            else {
                                if (rest==0) {
                                    zahl++;
                                }
                            }
                }zahl++; // das zahl++; befindet sich nicht mehr in der inneren while schleife


        }

    }
  }
 
Zuletzt bearbeitet:

Meniskusschaden

Top Contributor
Aber die innere Schleife soll ja dann auch nicht mehr ausgeführt werden, wenn der teiler größer als grenze ist. Dann hat man ja alle Teiler geprüft und wenn bis dahin kein mal die if-Bedingung erfüllt war, haben wir keine Primzahl.
So verstehe ich den Code. :/
Das wurde dann für den ersten Primzahl-Kandidaten geprüft. Dann soll in der äußeren Schleife der nächste Kandidat festgelegt werden, für den in der inneren Schleife dann erneut geprüft werden soll, ob er eine Primzahl ist.
 

mrBrown

Super-Moderator
Mitarbeiter
Wird teiler nicht nach dem sie Schleife beendet wurde wieder auf 2 zurückgesetzt?
Warum sollte denn teiler einfach so auf irgendeinen Wert gesetzt werden, ohne dass du die Anweisung hingeschrieben hast?

Und wenn ich doch einen neuen Kandidaten als zahl habe dann müsste sich doch die grenze ändern, oder wieso passiert das nicht?
Da das gleiche; warum sollte sich der Wert einfach ändern? Du musst schon hinschreiben, auf was die Variable gesetzt werden soll
 

Nummer11

Mitglied
Ich weiß auch nicht warum, aber ich dachte das wäre so. Wieder was gelernt, danke. Hab das jetzt so gemacht:
Java:
public class Ausgabe {

    public static void main(String[] args) {
                int zahl =1;
                int grenze;
                int teiler;
                int rest;
                int y = 0;
              
                while (y!=100){
                    teiler =2;
                    grenze = zahl/2;
                    while (teiler <= grenze) {
                      
                    rest = zahl % teiler;
                    teiler++;
                        if ( rest!=0 && teiler == grenze) {
                            System.out.print(zahl + " ");
                            y++;}
                            else {
                                if (rest==0) {
                                    zahl++;
                                }
                            }
                }  zahl++;


        }   // das zahl++; befindet sich nicht mehr in der inneren while schleife

    }
  }


Das gute ist: Ich lande nicht mehr in einer Endlosschleife!
Nicht so gut: Der Code spuckt irgendwie Mist aus. Stimmt das denn so, wie ich es umgeschrieben habe?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Warum terminiert mein Programm nicht!? Java Basics - Anfänger-Themen 15
T Input/Output Programm terminiert nicht -> stürzt ab, wo Fehler? Java Basics - Anfänger-Themen 3
E Wie wird in Java ein Char-Array terminiert ? Java Basics - Anfänger-Themen 15
S Threads Programm terminiert statt zu warten Java Basics - Anfänger-Themen 20
E Socket InputStream "terminiert" nicht Java Basics - Anfänger-Themen 4
A Wieso terminiert das Programm nicht? Java Basics - Anfänger-Themen 4
S Programm terminiert nicht Java Basics - Anfänger-Themen 2
A Warum wird mein jdk nicht gefunden? Java Basics - Anfänger-Themen 3
J Layout Manager, welcher ist der Richtige für mein Program? Java Basics - Anfänger-Themen 1
dennis_lnz Klassen Wie kann ich mein Java Textadventure verbessern, um ein Klassendiagramm zu erstellen? Java Basics - Anfänger-Themen 9
J Größter gemeinsamer Teiler: mein Code Java Basics - Anfänger-Themen 6
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
J Mein Java Programm lässt sich nicht mehr bearbeiten Java Basics - Anfänger-Themen 2
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
Alen123 Warum funktioniert mein Code nicht? Java Basics - Anfänger-Themen 64
sserio Wieso funktioniert mein Programm nicht Java Basics - Anfänger-Themen 2
sserio Wieso funktioniert mein TableView nicht /JavaFX. Java Basics - Anfänger-Themen 4
M Mein quellcode wird nicht in der Konsole ausgegeben Java Basics - Anfänger-Themen 3
J Nach dem Exportieren funktioniert mein Programm nicht mehr Java Basics - Anfänger-Themen 8
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
W Wie ziehe ich von einer bestimmten Zahl, Zahlen ab, bis mein Ergebnis null beträgt? Java Basics - Anfänger-Themen 10
J Kann ich mein Programm so schreiben? Java Basics - Anfänger-Themen 4
S Mein erstes eigenes Projekt - Aufbau und Strukturierung Java Basics - Anfänger-Themen 6
A Java die richtige Programmiersprache für mein Projekt? Java Basics - Anfänger-Themen 1
T Mein Programm hat Fehler Java Basics - Anfänger-Themen 4
S Brauche hilfe in Java [Fehler in mein Code]? Java Basics - Anfänger-Themen 2
S Wie ende ich mein Pogrammierung? [Hilfe] Java Basics - Anfänger-Themen 1
R Mein Plugin funktioniert nicht? Java Basics - Anfänger-Themen 10
J Mein Programm beendet sich ohne mein Zutun Java Basics - Anfänger-Themen 9
A Eine Krone in der Textausgabe - Mein Code Java Basics - Anfänger-Themen 11
M Warum berechnet mein Primzahlenprog zu hohe Zahlen nicht? Java Basics - Anfänger-Themen 20
M OOP Mein erstes Textadventure... Java Basics - Anfänger-Themen 3
G Mein Java Projekt funktioniert nicht Java Basics - Anfänger-Themen 5
W Wieso funktioniert mein Switch Case nicht ?! Java Basics - Anfänger-Themen 9
L Mein Taschenrechner lässt sich plötzlich nicht mehr öffnen Java Basics - Anfänger-Themen 5
x-tshainge Mein Programm lässt sich nicht Starten Java Basics - Anfänger-Themen 8
W Warum läuft mein Programm nicht? Java Basics - Anfänger-Themen 14
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 12
W Warum funktioniert mein Programm nicht ? Java Basics - Anfänger-Themen 6
W Ist mein Struktogram richtig erstellt worden? Java Basics - Anfänger-Themen 4
W Erste Schritte Warum funktioniert mein Programm nicht ? ~if Anweisung~ Java Basics - Anfänger-Themen 4
A Erste Schritte Mein Programm erkennt die variable EinAus.readInt nicht Java Basics - Anfänger-Themen 15
G Wie kann ich mein Quellcode als Programm vom desktop starten? Java Basics - Anfänger-Themen 1
P Wie kann ich mein Programm zu einer App umwandeln? Java Basics - Anfänger-Themen 4
M Mein erstes Programm Java Basics - Anfänger-Themen 3
A Mein 1x1 Programm funktioniert nicht? Java Basics - Anfänger-Themen 2
G Input/Output Wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
G Variablen Was ist mein Fehler? Java Basics - Anfänger-Themen 2
C Warum funktioniert mein If Statement nicht richtig? Java Basics - Anfänger-Themen 18
B Drucken: Default Paper von Drucker? Mein Drucker druckt falsch Java Basics - Anfänger-Themen 3
W Compiler-Fehler Fehler - <identifier> expected, wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
stylegangsta Input/Output Hat eclipse eine Macke oder mein Code Array Datei einlesen Java Basics - Anfänger-Themen 5
M Mein erstes Java Programm Java Basics - Anfänger-Themen 5
S Wieso wird mein JFrame transparent dargestellt? Java Basics - Anfänger-Themen 5
N mein RegEx Java Basics - Anfänger-Themen 2
N Mein Bubblesort sortiert mein Array nicht Java Basics - Anfänger-Themen 2
W Wie hat mein Lehrer das gemacht. Java Basics - Anfänger-Themen 2
Z Klassen Warum wird mein Objekt nicht erkannt? Java Basics - Anfänger-Themen 2
J Erste Schritte Zweithöchster Wert eines Arrays herausfinden - warum klappt mein Code nicht? Java Basics - Anfänger-Themen 3
A Wie kann ich mein Programm noch effizienter machen? Java Basics - Anfänger-Themen 1
C Mein Video zu Java Grundlagen Java Basics - Anfänger-Themen 8
T Eclipse kennt mein Button nicht... Java Basics - Anfänger-Themen 5
J Wo liegt nur an dieser einfachen Bedingung mein Fehler? Java Basics - Anfänger-Themen 8
E Mein eigener Listener (Hilfe gesucht) Java Basics - Anfänger-Themen 2
D Brauche Hilfe für mein übungsprogramm Java Basics - Anfänger-Themen 16
T Mein String in ein JLabel stecken Java Basics - Anfänger-Themen 2
T mein erstes Java projekt Java Basics - Anfänger-Themen 8
H Kann ich mein Programm vereinfachen? Java Basics - Anfänger-Themen 3
J Methoden Wo ist mein Fehler ?! Java Basics - Anfänger-Themen 9
1 Mein erstes Programm, HELP!! Java Basics - Anfänger-Themen 2
R .txt in mein Javaprogramm hineinschmelzen Java Basics - Anfänger-Themen 6
T OOP Mein erstes Java-Spiel - Schiffe versenken! Java Basics - Anfänger-Themen 2
E Mein erstes Java Projekt - Sauberer code? Java Basics - Anfänger-Themen 28
S Mein Code is unübersichtlich - besseren Stil Java Basics - Anfänger-Themen 6
D Mein erstes Programm flackert Java Basics - Anfänger-Themen 5
H Ich kann mein Java Programm Test.class nicht ausführen Java Basics - Anfänger-Themen 6
H Probleme mein Ausführen der .class (Ubuntu JDK6) Java Basics - Anfänger-Themen 2
M Mein TableEvent problem Java Basics - Anfänger-Themen 3
C Boolsche Ausdrücke - Wo ist mein Fehler? Java Basics - Anfänger-Themen 14
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
M Warum wird mein Icon bei den JTree Nodes nicht angezeigt? Java Basics - Anfänger-Themen 7
K Mein Programm... Heute: Settings-Datei in .jar speichern und auslesen Java Basics - Anfänger-Themen 9
M Kann mein Java Programm nicht starten Java Basics - Anfänger-Themen 6
V Mein erster Konstruktor Java Basics - Anfänger-Themen 3
S GaussJordan in Java, wo liegt mein Fehler? Java Basics - Anfänger-Themen 4
B Methoden Mein erstes Programm - und gleich Probleme Java Basics - Anfänger-Themen 6
U2nt Mein Chat Java Basics - Anfänger-Themen 10
S Wo ist mein Fehler? Java Basics - Anfänger-Themen 2
M Sammlung von Anfängerfragen für mein erstes Programm Java Basics - Anfänger-Themen 15
I OOP This-Referenzs > wo liegt mein Denkfehler? Java Basics - Anfänger-Themen 24
L Hashtable nicht wirklich geeignet für mein Vorhaben? Java Basics - Anfänger-Themen 3
W ArrayListe , Wo ist mein Fehler? Java Basics - Anfänger-Themen 6
H wie bekomm ich ein Foto in mein Programm rein? Java Basics - Anfänger-Themen 8
M Mein Externes Programm startet nicht Java Basics - Anfänger-Themen 13
M Timer unterbrechen? Wo ist mein Thread? Java Basics - Anfänger-Themen 2
S wieso ist mein Code falsch? Java Basics - Anfänger-Themen 2
S Mein Computer kennt "javac" und "java" nicht mehr! Java Basics - Anfänger-Themen 6
B XML? Für Uhrzeit und Datum für mein HP? Java Basics - Anfänger-Themen 6
JeromeM90 Mein Java Applet zeitverzögern ? Java Basics - Anfänger-Themen 2
Developer_X Mein erster Internet Explorer Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben