2016-05-15 9 views
0

Ich habe einige Zeilen Code wie folgt. kann mir jemand erklären warum "while loop" nicht aufhört. Es zeigt das Ergebnis mehr als das Gleichgewicht.Warum meine "While-Schleife" nicht stoppt

static void Main(string[] args) 
{ 
    const double balance = 303.91; 
    const double phonePrice = 99.99; 
    double a = 0; 

    while (a < balance) 
    { 
     a = a + phonePrice; 
    } 
    Console.WriteLine(a); 
    Console.ReadLine(); 
} 
+3

Es ändern tut genau das, was du geschrieben hast. Die Schleife endet, wenn a größer als das Guthaben ist, und dann wird ein Wer größer als das Guthaben gedruckt. Was hast du hier erwartet? – Steve

+0

das ist, weil Sie nicht inkrementieren. Grundsätzlich ist ein immer Null, ohne jemals hochzugehen. – ARLCode

+0

Es sollte 3 mal laufen. – Jerfov2

Antwort

1

Sie überprüfen den Wert nach hinzufügen, so fügen Sie es zuerst, dann prüfen Sie, ob a größer als balance oder nicht so einmal zusätzliche phoneprice mit a hinzugefügt wird. Machen Sie Ihre While-Schleife

while ((a + phonePrice) < balance) 
    { 
    a = a + phonePrice; 
    } 
+0

danke, ich verstehe es jetzt – kaynb

3

Es tut genau das, was Sie geschrieben haben.
Die Schleife endet, wenn ein größer als Gleichgewicht ist und Sie dann drucken, dass eine Variable

Wenn Sie die Schleife zu stoppen, bevor läuft das Geld erwarten, dann müssen Sie die Schleife Ausgangsbedingung

static void Main(string[] args) 
{ 
    const double balance = 303.91; 
    const double phonePrice = 99.99; 
    double a = 0; 

    // You don't want to run out of money, so check if buying 
    // another phone will bankrupt your finances.... 
    while ((a + phonePrice) < balance) 
    { 
     a = a + phonePrice; 
    } 
    Console.WriteLine(a); // a = 299,97 
    Console.ReadLine(); 
} 
+0

danke, ich verstehe es jetzt – kaynb