While-Schleife geht in Endlosschleife über, warum?

Diskutiere While-Schleife geht in Endlosschleife über, warum? im Java Basics - Anfänger-Themen Bereich.
S

steppix

Hallo zusammen, nachdem ich das letzte mal vor 6 Jahren etwas mit programmieren zu tun gehabt habe, wollte ich mich einfach noch mal mit der Programmiersprache Java beschäftigen. Doch irgendwie komme ich aktuell nicht weiter. Ich weiß nicht warum die nachfolgende Syntax, in einer Endlosschleife endet? Vielleicht kann mir einer von euch weiter helfen.

Java:
package schleifenzaehler;
public class schleife {

    public static void main(String[] args) {
   
        double a = 14;
        double b = 1;
        double c = 14;
   
        while (a>10) {
           
            a = c / (b * 1.1);
           
            System.out.println(a);
           
        }
       
    }

}
 
Zuletzt bearbeitet von einem Moderator:
H

httpdigest

Naja, egal wie häufig du die Schleife ausführst, `a` wird nach dem ersten Schleifendurchlauf immer denselben Wert 12.727.. haben, da sich ja an den abhängigen Variablen `b` und `c` nichts ändert...
 
S

steppix

Im Grunde genommen müsste doch durch die innerhalb der Berechnung stattfindende Erhöhung von b, a zwangsläufig kleiner werden?
 
H

httpdigest

die innerhalb der Berechnung stattfindende Erhöhung von b
Welche Erhöhung von b? Du multiplizierst b einfach mit 1.1. Aber, das Ergebnis davon wird ja nicht wieder `b` selbst zugewiesen, sondern ist einfach ein Wert für sich.
Es wäre sehr schlecht, wenn jede Operation mit mindestens einer Variablen als Operand, diese Variable immer implizit mitändern würde:
Java:
int a = 3;
int b = a * 2;
Das ändert ja auch nicht `a` zu 6.
 
S

steppix

Aso jetzt verstehe ich. Ich dachte b würde sich bei dem nächsten Schleifendurchgang auch den Wert mitholen (b vor durchgang der Schleife 1, nach dem ersten Durchlauf b=1,1). Aber dann war diese Annahme falsch.
 
H

httpdigest

Das kannst du z.B. erreichen mit:
Java:
while (a > 10) {
  a = c / (b *= 1.1);
  System.out.println(a);
}
oder übersichtlicher:
Java:
while (a > 10) {
  b *= 1.1; // <- oder b = b * 1.1
  a = c / b;
  System.out.println(a);
}
Ich dachte b würde sich bei dem nächsten Schleifendurchgang auch den Wert mitholen (b vor durchgang der Schleife 1, nach dem ersten Durchlauf b=1,1). Aber dann war diese Annahme falsch.
Du kannst dir in deinem Fall auch erstmal die Schleife wegdenken bzw. "unrollen". Dann wird vielleicht klar, warum das nicht so ist:
Java:
// einfach mal vier hintereinander folgende "Schleifendurchläufe":
a = c / (b * 1.1);
a = c / (b * 1.1);
a = c / (b * 1.1);
a = c / (b * 1.1);
 
Thema: 

While-Schleife geht in Endlosschleife über, warum?

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben