do while-Schleife mit einer if-Anweisung zum drucken der ungeraden zahlen
Im moment bin ich Lern-loops. Ich bin versuchen, um eine Konsole-Anwendung, die verwendet eine do while-Schleife zum ausdrucken aller ungeraden zahlen zwischen 20 und 0.
Warum, wenn ich die Auskommentierung if
Erklärung unten mein code wird nicht alles gedruckt und nie endet?"
using System;
class Program
{
static void Main(string[] args)
{
int i = 20;
do
{
//if (i%2 !=0)
{
Console.WriteLine(
"When counting down from 20 the odd values are: {0}", i--);
}
} while (i >=0);
}
}
- Was ist Los mit der
if
, die Sie jetzt haben (außer der Tatsache, dass es auskommentiert ist)? - Die Tatsache, dass
i--
ist im inneren, so dass es stecken bleibt, sobald es erreicht einen auch Wert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, die wichtigste Frage, die Sie haben, ist, dass das Dekrement (
i--
) tritt nur innerhalb des if-Blocks. Das bedeutet, dass, wenn die Bedingung nicht, Sie geben ein infite-Schleife. Sie können bewegen Sie den Dekrement-außerhalb der if-block zu beheben. Versuchen Sie dies:Ich zog auch die erste
Console.Write
außerhalb der Schleife zur Verringerung der Redundanz in der Ausgabe. Dies wird produzieren:--
/++
können später erledigt werden, wenn man versteht einfache Operationen. Auch gibt es in der Regel nichts gewonnen werden, durch die Kombination von Dekrement und anderer Betrieb machen außer code suchen, wie geschrieben von "erfahrenen C-Programmierer" 🙂Einer for-Schleife einfacher zu Folgen:
while
undfor
- Schleifen sind erforderlich art von eine Programmierer-toolkit. In der Tat ist die while-Schleife ist mehr allgemein und wohl einfacher, und entsprechend gelehrt, ersten. Verwirrend ist die OP mit einer anderen Schleife mehr eingeschränkt zu verwenden ist überhaupt nicht nützlich. Wenn, jedoch, der OP waren mehr erfahrene Entwickler, dann schlägt eine weitere Technik gelernt angebracht wäre.do ... while
Schleife, nichtwhile
Schleife. Diese Antwort verdient ein +1, die ich gab, nicht diese absurde BS darüber nicht hilfreich.Sorry, ich weiß, das ist wirklich alt, und die erste Frage war für einen nicht ein, aber ich wollte noch hinzufügen, was ich getan habe, um dies zu erreichen Ergebnisse. Wenn ich Gegoogelt, die Frage zunächst, das ist, was war zuerst zurückgegeben, trotz meiner Abfrage wird eine FOR-Schleife. Ich hoffe, jemand unten auf der Straße finden dies hilfreich.
Den unten drucken der ungeraden Anzahl-index einer array - in diesem Fall -, Konsolen-App-args.
Ausgabe mit 6 Argumente:
1
3
5
Bewegen i++ um den ersten Schritt in die for-Schleife bekommst du die auch zahlen.
Ausgabe wird sein:
2
3
4
Dies ist setup, so können Sie auch die tatsächlichen Werte der Argumente zu anstatt einfach nur die Anzahl und der Druck des args-index. Erstellen Sie einfach einen string ein und setzen Sie den string args[i]:
Wenn Sie brauchen, um count " und " exclude "0" in dem Fall, dass Ihr den Druck von zahlen wie die Frage zunächst fragt, dann richten Sie Ihre for-Schleife etwa so:
Bemerken, wie das "ich" ist zunächst 1 in diesem Beispiel und i ist kleiner als oder gleich der array-Länge, anstatt einfach weniger als. Denken Sie an Ihr weniger als und kleiner/gleich ist, oder Sie bekommen OutOfRangeExceptions.
++
/--
als Teilif
Anweisung für die person nur zu lernen, Schleifen ist nicht die beste Idee. Plus als Ben Voigt wies darauf hin, dass Sie am Ende mit völlig falschen code - 2 dekrementiert, und es wird nie drucken der ungeraden zahlen.