Есть ли способ кодировать цикл for, чтобы он не увеличивался в последовательности?


10

У меня есть этот цикл:

  for (int i = 1; i < 10; i++)

Но вместо этого я хотел бы, чтобы я просто для чисел 1,2,4,5 и 7, и я буду жестко кодировать это.

Есть ли способ, которым я могу сделать это с чем-то вроде массива?


1
создайте массив нужных вам чисел и используйте foreach
— PaulF

2
Не могли бы вы дать более подробную информацию, чтобы мы могли помочь предложить соответствующие решения? Как часто вы планируете пропускать номера? Сколько чисел вы ожидаете пропустить? Как вы знаете, какие номера пропустить? Почему вы пропускаете номера в первую очередь? Что и как вы это жестко программируете?
— Корентин Пейн

это не так просто, как я думал в начале, чтобы найти дубликат
— Монг Чжу

Ответы:


13

Вы можете использовать массив, чтобы дать номера, которые вы хотите, как это

int[] loop = new int[] {1,2,4,5,7};
foreach(int i in loop)
    Console.WriteLine(i);

Или сделать это встроенным, что не так чисто, когда список значений растет, на мой взгляд

foreach(int i in new int[] {1,2,4,5,7})
    Console.WriteLine(i);

1
Второй более чистый для меня - массив только в области видимости во время цикла. Кроме того, чтобы сделать его действительно «чистым», вы можете удалить intобъявление, так как компилятор определит его по содержимому.
— Руфус Л


4

В основном ответы здесь верны, просто потому, что вы явно запросили forвместо foreachцикла:

int[] loop = new int[] { 1, 2, 4, 5, 7 };
for (int i = 0; i< loop.Length; i++)
{
    Console.WriteLine(loop[i]);
}

https://dotnetfiddle.net/c5yjPe


0

Если вы хотите, особенно для цикла, то пойти с этим:

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]);
        }

0

Очевидно, что правильным ответом для общего случая является использование foreachили индексированный поиск, как показано в других ответах, но только для полноты:

Вы можете использовать любое выражение в forвыражении, включая условные выражения. Имея это в виду, легко построить условное приращение или даже полное условное условие (конечный автомат?) Для требуемого набора:

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

Или даже что-то действительно глупое, как поиск по самоиндексированию:

for (int i = 1; i > 0; i = new []{0,2,4,0,5,7,0,-1}[i])
{
    Console.Write(i);
}
// Output: 12457
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.