2016-04-28 41 views
-1

Ich frage mich, wie Sie eine for-Schleife verlassen, wenn die Eingabe erfolgreich ist, wird der Benutzer 3 Versuche, eine Zahl über 0 eingeben. Seine Arbeit für sie ist nicht erfolgreich, aber es macht mich immer noch Geben Sie den Wert 3 mal ein, auch wenn eine korrekte Nummer eingegeben wurde.Verlassen einer for-Schleife, wenn die Eingabe erfolgreich ist

for (var attempts = 3; attempts--;) { 
    var input = window.prompt("Please enter a number"); 
    if (input < 0) { 
     document.write("Try Again"); 
    } 
} 
document.write("Grand"); 
+0

füge eine 'else', die eine' break' unter Ihrem 'if' – jDo

Antwort

1

Hier sind die Probleme mit Ihrem Code:

  1. Sie haben keine else Aussage. Wenn sie nicht den richtigen Code eingeben, verarbeitet sie nichts sonst bedingt. Es wird immer Verarbeitung der "Grand" Ausgabe unabhängig von der Eingabe.
  2. Der Zustand < 0 ist nicht das, was Sie wollen. Wenn sie 0 eingeben, würde es immer noch die Prüfung bestehen und sagen "Versuchen Sie es erneut"
  3. Die Antwort auf Ihre eigentliche Frage, fügen Sie einfach eine Pause in der (fehlenden) else Aussage.

Versuchen Sie folgendes:

<script> 
for (var attempts = 1; attempts <= 3; attempts++) { 
    var input = window.prompt("Please enter a number"); 
    if (input <= 0) { 
    if (attempts == 3) { 
     //this is the 3rd failure 
     document.write("You have failed 3 times!"); 
     break; 
    } else { 
     //this is for the 1st and second failures 
     document.write("Try Again<br>"); 
    } 
    } else { 
    document.write("Grand"); 
    break; 
    } 
} 
</script> 
+0

Ihre Lösung ist falsch. Nachdem Sie eine positive Zahl eingegeben haben, wird erneut nach einem anderen gefragt. – AaronC

+0

Ups, die Frage falsch gelesen. Ich dachte, die "richtige" Antwort wäre 0. Ich werde updaten, danke. –

+0

Danke. Allerdings noch 1 Sache. Wenn eine negative Zahl dreimal eingegeben wird, wird erneut versucht, dreimal auf den Bildschirm auszugeben. Ich weiß das wegen der Schleife aber wie kann ich es nur einmal ausgeben oder stattdessen "nicht erfolgreich" oder so ähnlich – AaronC

1

Sie können eine Schleife mit einer break Anweisung verlassen.

for (var attempts = 3; attempts > 0; attempts--) { 
    var input = window.prompt("Please enter a number"); 
    if (input < 0) { 
     if(attempts > 1){ 
      document.write("Try Again");  
     }else{ 
      document.write("No more attempts!"); 
     } 

    }else{ 
     break; 
    } 
} 
+0

Dies ist jedoch am nächsten, wenn eine negative Zahl dreimal eingegeben wird. "Erneut versuchen" wird 3 Mal auf dem Bildschirm ausgegeben. – AaronC

+0

Aktualisiert, jetzt wird nur noch zweimal "Erneut versuchen" gedruckt. Wenn der Benutzer zum dritten Mal eine negative Zahl eingibt, zeigt das Programm einfach nichts an. – Keiwan

+0

Nun wird auch eine Nachricht nach dem letzten fehlgeschlagenen Versuch gedruckt. – Keiwan

0

Es gibt viele Möglichkeiten, es zu tun, ist hier ein:

var attempts = 3, valid_input = false, input; 

while (attempts > 0 && valid_input === false) { 
    input = parseInt(window.prompt("Please enter a number"), 10); 
    if (input <= 0) { 
     alert("Try Again"); 
    } else { 
     valid_input = true; 
    } 
} 
if (valid_input === true) { 
    document.write("Grand"); 
} else { 
    document.write("Failed 3 times"); 
} 
+0

Vermissen Sie 'Versuche -;'? –

Verwandte Themen