Apakah ada cara untuk kode untuk loop sehingga tidak bertambah melalui urutan?

10

Saya memiliki loop ini:

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

Tetapi sebaliknya saya ingin memiliki saya hanya nomor 1,2,4,5 dan 7 dan saya akan hardcode ini.

Apakah ada cara saya bisa melakukan ini dengan sesuatu seperti array?

Alan2
sumber
1
buat larik angka yang diperlukan Anda & gunakan foreach
PaulF
2
Bisakah memberikan detail lebih lanjut sehingga kami dapat membantu memberikan solusi yang relevan? Seberapa sering Anda berencana melewatkan nomor? Berapa angka yang Anda harapkan untuk dilewati? Bagaimana Anda tahu nomor yang dilewati? Mengapa Anda melewatkan angka? Apa dan bagaimana Anda meng-hardcoding ini?
Corentin Pane
itu tidak semudah yang saya pikirkan pada awalnya untuk menemukan duplikat
Mong Zhu

Jawaban:

13

Anda bisa menggunakan array untuk memberikan angka yang Anda inginkan seperti ini

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

Atau lakukan sebaris yang tidak bersih ketika daftar nilai tumbuh menurut saya

foreach(int i in new int[] {1,2,4,5,7})
    Console.WriteLine(i);
Joost K
sumber
1
Yang kedua lebih bersih bagi saya - array hanya dalam ruang lingkup selama loop. Juga, untuk membuatnya benar-benar "bersih", Anda dapat menghapus intdeklarasi, karena kompilator akan menentukan itu dari konten.
Rufus L
7
foreach (int i in new int[] { 1, 2, 4, 5, 7 })
{

}
Johnathan Barclay
sumber
4

Pada dasarnya jawaban di sini benar, hanya karena Anda secara eksplisit meminta forbukan foreachloop:

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

fubo
sumber
0

Jika Anda ingin khususnya untuk loop kemudian lanjutkan dengan ini:

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]);
        }
Ajeet Malviya
sumber
0

Jelas jawaban yang tepat untuk kasus umum adalah menggunakan foreachatau pencarian yang diindeks seperti yang ditunjukkan dalam jawaban lain, tetapi hanya demi kelengkapan:

Anda dapat menggunakan pernyataan apa pun dalam afor ekspresi, termasuk kondisional. Dengan pemikiran itu, mudah untuk membangun kenaikan bersyarat atau bahkan kondisional lengkap (mesin negara?) Untuk set yang diperlukan:

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

Atau bahkan sesuatu yang sangat konyol seperti pencarian indeks diri:

for (int i = 1; i > 0; i = new []{0,2,4,0,5,7,0,-1}[i])
{
    Console.Write(i);
}
// Output: 12457
Andrew Hanlon
sumber