시퀀스를 통해 증가하지 않도록 for 루프를 코딩하는 방법이 있습니까?


10

이 루프가 있습니다.

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

그러나 대신 숫자 1, 2, 4, 5 및 7에 대해 i를 갖고 싶습니다.이를 하드 코딩합니다.

배열과 같은 것으로 이것을 할 수있는 방법이 있습니까?


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
두 번째 것은 나에게 더 깨끗합니다-배열은 루프 중에 만 범위에 있습니다. 또한, 실제로 "깨끗한"상태로 만들 int려면 컴파일러가 내용에서 선언을 결정하므로 선언을 제거 할 수 있습니다 .
Rufus 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

특히 for 루프를 원한다면 다음과 같이하십시오.

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.