Ho questo ciclo:
for (int i = 1; i < 10; i++)
Ma invece vorrei avere solo i numeri 1,2,4,5 e 7 e lo codificherò.
C'è un modo per farlo con qualcosa come un array?
Ho questo ciclo:
for (int i = 1; i < 10; i++)
Ma invece vorrei avere solo i numeri 1,2,4,5 e 7 e lo codificherò.
C'è un modo per farlo con qualcosa come un array?
Risposte:
È possibile utilizzare un array per fornire i numeri desiderati in questo modo
int[] loop = new int[] {1,2,4,5,7};
foreach(int i in loop)
Console.WriteLine(i);
O farlo in linea che non è così pulito quando l'elenco dei valori cresce secondo me
foreach(int i in new int[] {1,2,4,5,7})
Console.WriteLine(i);
intdichiarazione, poiché il compilatore lo determinerà dal contenuto.
foreach (int i in new int[] { 1, 2, 4, 5, 7 })
{
}
Fondamentalmente le risposte qui sono corrette, solo perché hai chiesto esplicitamente un foranziché un foreachciclo:
int[] loop = new int[] { 1, 2, 4, 5, 7 };
for (int i = 0; i< loop.Length; i++)
{
Console.WriteLine(loop[i]);
}
Se vuoi particolarmente per il loop, vai con questo:
var list = new List<int>() { 1, 2, 4, 5, 7 };
for (int i = 0; i < list.Count; i++) // Loop through List with for
{
Console.WriteLine(list[i]);
}
Ovviamente la risposta giusta per il caso generale è usare foreacho una ricerca indicizzata come mostrato nelle altre risposte, ma solo per completezza:
È possibile utilizzare qualsiasi istruzione all'interno di forun'espressione, inclusi i condizionali. Con questo in mente, è facile costruire un incremento condizionale o anche un condizionale esaustivo (macchina a stati?) Per un set richiesto:
for (int i = 1; i <= 7; i += (i == 5 || i == 2) ? 2 : 1)
{
Console.Write(i);
}
// Output: 12457
for (int i = 1; i > 0; i = i switch {1=>2, 2=>4, 4=>5, 5=>7, 7=>-1})
{
Console.Write(i);
}
// Output: 12457
O anche qualcosa di veramente sciocco come una ricerca di auto-indicizzazione:
for (int i = 1; i > 0; i = new []{0,2,4,0,5,7,0,-1}[i])
{
Console.Write(i);
}
// Output: 12457