Tengo este bucle:
for (int i = 1; i < 10; i++)
Pero, en cambio, me gustaría tener i solo para los números 1,2,4,5 y 7 y codificaré esto.
¿Hay alguna manera de hacer esto con algo así como una matriz?
Tengo este bucle:
for (int i = 1; i < 10; i++)
Pero, en cambio, me gustaría tener i solo para los números 1,2,4,5 y 7 y codificaré esto.
¿Hay alguna manera de hacer esto con algo así como una matriz?
Respuestas:
Podrías usar una matriz para dar los números que quieres así
int[] loop = new int[] {1,2,4,5,7};
foreach(int i in loop)
Console.WriteLine(i);
O hágalo en línea, lo que no es tan limpio cuando la lista de valores crece en mi opinión
foreach(int i in new int[] {1,2,4,5,7})
Console.WriteLine(i);
intdeclaración, ya que el compilador lo determinará a partir de los contenidos.
foreach (int i in new int[] { 1, 2, 4, 5, 7 })
{
}
Básicamente, las respuestas aquí son correctas, solo porque solicitó explícitamente forun foreachbucle en lugar de un bucle:
int[] loop = new int[] { 1, 2, 4, 5, 7 };
for (int i = 0; i< loop.Length; i++)
{
Console.WriteLine(loop[i]);
}
Si desea particularmente para el bucle, vaya con esto:
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]);
}
Obviamente, la respuesta correcta para el caso general es usar foreacho una búsqueda indexada como se muestra en las otras respuestas, pero solo por completo:
Puede usar cualquier declaración dentro de una forexpresión, incluidos los condicionales. Con eso en mente, es fácil construir un incremento condicional o incluso un condicional exhaustivo (¿máquina de estado?) Para un conjunto requerido:
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 incluso algo realmente tonto como una búsqueda de auto indexación:
for (int i = 1; i > 0; i = new []{0,2,4,0,5,7,0,-1}[i])
{
Console.Write(i);
}
// Output: 12457