Erstellen Sie ein Array Ihrer erforderlichen Nummern und verwenden Sie foreach
PaulF
2
Könnten Sie weitere Details angeben, damit wir Ihnen bei der Bereitstellung relevanter Lösungen helfen können? Wie oft planen Sie, Zahlen zu überspringen? Wie viele Zahlen werden Sie voraussichtlich überspringen? Woher wissen Sie, welche Nummern zu überspringen sind? Warum überspringen Sie überhaupt Zahlen? Was und wie codierst du das fest?
Corentin Pane
Es ist nicht so einfach, wie ich am Anfang dachte, ein Duplikat zu finden
Mong Zhu
Antworten:
13
Sie können ein Array verwenden, um die gewünschten Zahlen wie folgt anzugeben
int[] loop =newint[]{1,2,4,5,7};foreach(int i in loop)Console.WriteLine(i);
Oder machen Sie es inline, was meiner Meinung nach nicht so sauber ist, wenn die Liste der Werte wächst
foreach(int i innewint[]{1,2,4,5,7})Console.WriteLine(i);
Der zweite ist für mich sauberer - das Array ist nur während der Schleife im Gültigkeitsbereich. Um es wirklich "sauber" zu machen, können Sie die intDeklaration auch entfernen , da der Compiler dies aus dem Inhalt bestimmt.
Offensichtlich die richtige Antwort für den allgemeinen Fall zu verwendenforeach oder eine indizierte Suche, wie in den anderen Antworten gezeigt, aber nur der Vollständigkeit halber:
Sie können jede Anweisung innerhalb eines forAusdrucks verwenden, einschließlich Bedingungen. In diesem Sinne ist es einfach, ein bedingtes Inkrement oder sogar ein erschöpfendes zu erstellen Bedingung (Zustandsmaschine?) Für einen erforderlichen Satz :
for(int i =1; i <=7; i +=(i ==5|| i ==2)?2:1){Console.Write(i);}// Output: 12457for(int i =1; i >0; i = i switch{1=>2,2=>4,4=>5,5=>7,7=>-1}){Console.Write(i);}// Output: 12457
Oder sogar etwas wirklich Dummes wie eine selbstindizierende Suche:
for(int i =1; i >0; i =new[]{0,2,4,0,5,7,0,-1}[i]){Console.Write(i);}// Output: 12457
Antworten:
Sie können ein Array verwenden, um die gewünschten Zahlen wie folgt anzugeben
Oder machen Sie es inline, was meiner Meinung nach nicht so sauber ist, wenn die Liste der Werte wächst
quelle
int
Deklaration auch entfernen , da der Compiler dies aus dem Inhalt bestimmt.quelle
Grundsätzlich sind die Antworten hier richtig, nur weil Sie explizit nach a gefragt haben
for
statt einerforeach
Schleife :https://dotnetfiddle.net/c5yjPe
quelle
Wenn Sie speziell für Schleife wollen, dann gehen Sie mit diesem:
quelle
Offensichtlich die richtige Antwort für den allgemeinen Fall zu verwenden
foreach
oder eine indizierte Suche, wie in den anderen Antworten gezeigt, aber nur der Vollständigkeit halber:Sie können jede Anweisung innerhalb eines
for
Ausdrucks verwenden, einschließlich Bedingungen. In diesem Sinne ist es einfach, ein bedingtes Inkrement oder sogar ein erschöpfendes zu erstellen Bedingung (Zustandsmaschine?) Für einen erforderlichen Satz :Oder sogar etwas wirklich Dummes wie eine selbstindizierende Suche:
quelle