มีวิธีการรหัสสำหรับลูปเพื่อที่จะไม่เพิ่มขึ้นตามลำดับหรือไม่


10

ฉันมีวงนี้:

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

แต่ฉันต้องการให้ฉันมีเพียง 1,2,4,5 และ 7 และฉันจะทำโค้ดนี้

มีวิธีที่ฉันสามารถทำกับสิ่งที่เหมือนอาร์เรย์หรือไม่


1
สร้างอาเรย์ของตัวเลขที่คุณต้องการและใช้ foreach
PaulF

2
ให้รายละเอียดเพิ่มเติมเพื่อให้เราสามารถช่วยแก้ปัญหาที่เกี่ยวข้องได้หรือไม่ คุณวางแผนที่จะข้ามหมายเลขบ่อยแค่ไหน? คุณคาดหวังว่าจะมีตัวเลขกี่ตัว คุณรู้ได้อย่างไรว่าจะต้องข้ามหมายเลขใด ทำไมคุณข้ามหมายเลขตั้งแต่แรก? คุณพิมพ์รหัสนี้อย่างไรและอย่างไร
Corentin Pane

มันไม่ง่ายอย่างที่ฉันคิดในตอนแรกเพื่อค้นหาสำเนา
Mong Zhu

คำตอบ:


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
อันที่สองนั้นสะอาดกว่าสำหรับฉัน - อาร์เรย์อยู่ในขอบเขตระหว่างลูปเท่านั้น นอกจากนี้เพื่อให้เป็น "clean" จริงๆคุณสามารถลบการintประกาศเนื่องจากคอมไพเลอร์จะกำหนดว่าจากเนื้อหา
รูฟัส L


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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.