For döngüsünü bir sekans boyunca artmaması için kodlamanın bir yolu var mı?


10

Bu döngü var:

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

Ama bunun yerine sadece 1,2,4,5 ve 7 sayıları için i'ye sahip olmak istiyorum ve bunu kodlayacağım.

Bunu bir dizi gibi bir şeyle yapabilmemin bir yolu var mı?


1
gerekli sayıların bir dizi oluşturmak ve foreach kullanın
PaulF

2
Alakalı çözümler sunabilmemiz için daha fazla ayrıntı verebilir misiniz? Numaraları ne sıklıkla atlamayı planlıyorsunuz? Kaç sayıyı atlamayı umuyorsunuz? Hangi sayıları atlayacağınızı nereden biliyorsunuz? İlk etapta neden sayıları atlıyorsunuz? Bunu ne ve nasıl kodluyorsun?
Corentin Pane

Başlangıçta bir kopya bulmak için düşündüğüm kadar kolay değil
Mong Zhu

Yanıtlar:


13

İstediğiniz sayıları vermek için bir dizi kullanabilirsiniz

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

Ya da bence değerler listesi büyüdüğünde satır içi değil mi?

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

1
İkincisi benim için daha temiz - dizi sadece döngü sırasında kapsamda. Ayrıca, gerçekten "temiz" hale getirmek için int, derleyiciyi içerikten belirleyeceği için bildirimi kaldırabilirsiniz .
Rufus L


4

Temel olarak buradaki yanıtlar doğrudur, çünkü forbir foreachdöngü yerine açıkça istediniz :

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

Özellikle döngü için istiyorsanız o zaman bu ile gitmek:

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

Açıkçası genel durum için doğru cevap foreach, diğer cevaplarda gösterildiği gibi kullanmak veya endeksli bir aramadır, ancak sadece tamlık uğruna:

Koşullar dahil bir ifadedeki herhangi bir forifadeyi kullanabilirsiniz . Bunu göz önünde bulundurarak, gerekli bir set için koşullu bir artış veya hatta kapsamlı bir koşul (durum makinesi?) Oluşturmak kolaydır :

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

Ya da kendini indeksleme araması gibi gerçekten aptalca bir şey bile:

for (int i = 1; i > 0; i = new []{0,2,4,0,5,7,0,-1}[i])
{
    Console.Write(i);
}
// Output: 12457
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.