Có cách nào để mã hóa một vòng lặp for để nó không tăng qua một chuỗi không?


10

Tôi có vòng lặp này:

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

Nhưng thay vào đó tôi muốn có i chỉ với số 1,2,4,5 và 7 và tôi sẽ mã hóa cứng này.

Có cách nào tôi có thể làm điều này với một cái gì đó như một mảng không?


1
tạo một mảng các số cần thiết của bạn và sử dụng foreach
— PaulF

2
Có thể cung cấp thêm chi tiết để chúng tôi có thể giúp cung cấp các giải pháp liên quan? Làm thế nào thường xuyên bạn có kế hoạch bỏ qua số? Có bao nhiêu số bạn dự kiến ​​sẽ bỏ qua? Làm thế nào để bạn biết những số để bỏ qua? Tại sao bạn bỏ qua số ở vị trí đầu tiên? Những gì và làm thế nào bạn đang mã hóa này?
— Corentin Pane

ban đầu không dễ như tôi nghĩ để tìm một bản sao
— Mong Zhu

Câu trả lời:


13

Bạn có thể sử dụng một mảng để đưa ra những con số bạn muốn như thế này

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

Hoặc làm nó nội tuyến không sạch sẽ khi danh sách các giá trị tăng theo ý kiến ​​của tôi

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

1
Cái thứ hai sạch hơn với tôi - mảng chỉ nằm trong phạm vi trong vòng lặp. Ngoài ra, để làm cho nó thực sự "sạch", bạn có thể xóa intkhai báo, vì trình biên dịch sẽ xác định điều đó từ nội dung.
— Rufus L


4

Về cơ bản các câu trả lời ở đây là chính xác, chỉ vì bạn đã hỏi rõ ràng forthay vì một foreachvòng lặp:

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

Nếu bạn muốn đặc biệt cho vòng lặp thì hãy đi với điều này:

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

Rõ ràng câu trả lời đúng cho trường hợp chung là sử dụng foreachhoặc tra cứu được lập chỉ mục như thể hiện trong các câu trả lời khác, nhưng chỉ vì sự hoàn chỉnh:

Bạn có thể sử dụng bất kỳ câu lệnh nào trong một forbiểu thức, bao gồm cả các điều kiện. Với ý nghĩ đó, thật dễ dàng để xây dựng một mức tăng có điều kiện hoặc thậm chí là một điều kiện đầy đủ (máy trạng thái?) Cho một tập hợp bắt buộc:

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

Hoặc thậm chí một cái gì đó thực sự ngớ ngẩn như một tra cứu tự lập chỉ mục:

for (int i = 1; i > 0; i = new []{0,2,4,0,5,7,0,-1}[i])
{
    Console.Write(i);
}
// Output: 12457
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.