Ich möchte gerne programmieren lernen, daher hab ich mir das Buch "Programmieren lernen für Dummies" geholt. Leider scheitere ich schon in Kapitel 11 bei der Aufgabe alle Primzahlen von 2 bis 100 zu addieren.
In der 1. If-Bedingung setzt er den Wert auf false, wenn er falsch ist, bzw. auf true, wenn er richtig ist. Das passt. Aber sobald er in die 2. if-Bedingung rein geht, setzt er das automatisch auf true. Warum?
Das erklärt schon mal, warum es da immer wieder auf true gesetzt wird.
Aber wenn ich if(isPrimzahl) schreibe, dann rechnet er nur die ersten beiden Primzahlen zusammen und danach keine mehr..
Das Problem war, dass Du die Variable isPrimzahl nur bei der Deklaration auf true gesetzt hast. Damit wird die einmal auf false gesetzt und dann nie wieder erneut gesetzt. Sprich: Die Variable kannst Du einfach in die äußere for Schleife stecken.
Der schönere Weg wäre dabei, den Scope für isPrimzahl passender zu wählen. Aktuell "existiert" für alle Primzahlen zusammen, eigentlich ist sie ja aber nur für eine einzelne gedacht -> die Variable in der for-schleife deklarieren und das Problem löst sich auch
Weil an fertigem Code niemand etwas lernt (wie man hier wieder sieht), der fertige Code oft schlecht ist (wie man hier wieder sieht) und sinnvolle Hilfe damit auch oftmals schwieriger wird (wie man hier z.T. sieht).
Ein Forum lässt sich nicht mit Stackoverflow vergleichen, das sind völlig unterschiedliche Konzepte.
Man kann da durchaus geteilter Meinung sein. Angeblich schlechter Code korrigiert sich idR von selbst, insofern solche Antworten von der Moderation nicht systematisch unterdrückt werden. Vielleicht scheut sich die Moderation auch davor, gute von schlechten Antworten zu unterscheiden. In jedem schlummert ja ein Genie, stimmt's?
Bei der 2. If-Bedingung.
If (isPrimzahl)
{ Zahl += i ;}
Else
{ isPrimzahl = true; }
Macht ja Sinn, wenn man so darüber nachdenkt. Ich dachte, wenn ich das oben deklariere, dass er das dann bei erneuter Ausführung der Schleife wieder berücksichtigt, aber klar , woher auch. Wieder was gelernt.