Чи існує спосіб кодування циклу, щоб він не збільшувався через послідовність?


10

У мене є ця петля:

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

Але замість цього я хотів би, щоб я мав лише для цифр 1,2,4,5 і 7, і я буду жорстко кодувати це.

Чи є спосіб я це зробити з чимось на зразок масиву?


1
створити масив потрібних вам номерів і використовувати foreach
PaulF

2
Не могли б дати детальнішу інформацію, щоб ми могли допомогти запропонувати відповідні рішення? Як часто ви плануєте пропускати номери? Скільки цифр ви очікуєте пропустити? Як ви знаєте, які числа пропустити? Чому ви пропускаєте цифри в першу чергу? Що і як ви жорстко кодуєте це?
Корантен Pane

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

Відповіді:


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.