2013-10-31 3 views
0
For i = 1 To 5 
    If i = 0 Then 
     i = i + 1 
    ElseIf i Mod 2 = 0 Then 
     LabelEvens.Text = i 
     i = i + 1 
    Else 
     LabelOdds.Text = i 
     i = i + 1 
    End If 
Next i 

나는 for 루프를 사용하여 두 개의 숫자 (루프 제한 1과 2) 사이를 정렬하고 짝수 또는 홀수인지 찾기 위해 VB에서 프로그램을 만들고 있습니다. 그렇다면 결과를 2 개의 라벨에 출력하십시오. 이 루프는 나에게 의미가 있지만, 예를 들어 1과 4를 입력하면 홀수 레이블에 5가 출력됩니다. 제 질문은 누구나 내 루프 문제를 볼 수 있을까요?VB에서 For 루프 관련 문제

답변

3

당신은 수동 루프 변수 i에 1을 추가 할 for 루프를하지 않아도 그 자체가 뒤에서 당신을 위해 않습니다 : 당신은 알 것이다

For i = 1 To 5 
    If i Mod 2 = 0 Then 
     LabelEvens.Text = i 
    Else 
     LabelOdds.Text = i 
    End If 
Next i 

나는 또한 If i = 0 비트를 제거했습니다 i은 그 루프 내에서 결코 0이 될 수 없기 때문에. 범위는 1에서 5까지입니다.

당신이해야 할 또 다른 일은 에 텍스트 상자에 값인을 붙이는 것입니다. 현재 보유하고있는 것은 대체품이므로 처리 된 마지막 값으로 만 설정됩니다. 이런 식으로 뭔가가 충분합니다 :

' Initialise to empty strings ' 

LabelEvens.Text = "" 
LabelOdds.Text = "" 

' Append the values ' 

For i = 1 To 5 
    If i Mod 2 = 0 Then 
     LabelEvens.Text = LabelEvens.Text & "," & CStr(i) 
    Else 
     LabelOdds.Text = LabelOdds.Text & "," & CStr(i) 
    End If 
Next i 

' Remove initial comma from both ' 

LabelEvens.Text = Mid(LabelEvens.Text,2) 
LabelOdds.Text = Mid(LabelOdds.Text,2) 
1

몇 가지 문제가 코드에서 :

For i = 1 To 5 
    If i = 0 Then     <-- 'I' will never be 0 since you start from 1 
     i = i + 1     <-- Don't manually increment since you are using a for 
    ElseIf i Mod 2 = 0 Then 
     LabelEvens.Text = i 
     i = i + 1     <-- Don't manually increment since you are using a for 
    Else 
     LabelOdds.Text = i 
     i = i + 1     <-- Don't manually increment since you are using a for 
    End If 
Next i 

당신이 가지고있는 또 다른 문제는 더 이상 홀수가있는 경우 범위 (의 범위에서 말하는 것입니다 1 ~ 10) 마지막 번호 만 받게됩니다. 이 사건에서 너는 무엇을하고 싶니? 문자열의 모든 홀수를 연결하거나 첫 번째 문자열을 찾은 후 중지하십시오? FOR 루프가 필요합니까?