2014-10-24 4 views
0

나는이 코드를 작동 시키려고했지만 운이 없었습니다. "핸디캡"점수에 따라 특정 순위를 인쇄하려고하고 있지만 순위를 무작위로 인쇄하는 것처럼 보입니다. 나는 성공적으로 핸디캡을 계산하는 코드를 가지고 있지만 일단 if 문으로 점수를 인쇄하려고하면 무작위로 텍스트를 인쇄하는 것처럼 보입니다.점수를 기반으로 순위를 표시합니다

  If (Handicap < 0) Then 
       TxtRank.Text = "Championship" 
      ElseIf (0 > Handicap Or Handicap < 5) Then 
       TxtRank.Text = "Duffer" 
      ElseIf (5 < Handicap Or Handicap < 10) Then 
       TxtRank.Text = "Average" 
      ElseIf (Handicap > 10) Then 
       TxtRank.Text = "Hacker" 
      End If 
+0

VS에는 실행되는 코드를 검사 할 수있는 강력한 디버거가 포함되어 있습니다. 두 번째 두 번째 테스트는별로 의미가 없습니다. 첫 번째 라인을 선택하고 [F9]를 누릅니다. 그런 다음 코드를 실행하여 실제로 어떤 일이 발생하는지 확인하십시오. – Plutonix

+0

비교의 일부는 <대신 <가되어야합니다. 예를 들어, 핸디캡이 정확히 5 일 경우, if 기준이 충족되지 않으며 텍스트가 변경되지 않습니다. 또한 "0> 핸디캡"은 "0 <핸디캡"(또는 <=)이어야합니다. – Darryl

+0

힌트 ** 만약 당신이 ** 당신의 응용 프로그램에서 사용하는 변수 타입을 변경할 수 있다면 _ _ : 정의 된 상태 목록이있을 때'String'을 사용하지 마십시오. 대신에'Enums'를 사용하십시오. 훨씬 더 빠릅니다 ... –

답변

1

너무 많은 쓸모없는 옵션이있어 읽기가 어려울 수 있습니다. 시도해보십시오.

 If (Handicap < 0) Then 
      TxtRank.Text = "Championship" 
     ElseIf Handicap < 5 Then 
      TxtRank.Text = "Duffer" 
     ElseIf Handicap < 10 Then 
      TxtRank.Text = "Average" 
     Else 
      TxtRank.Text = "Hacker" 
     End If 
2

이와 같이 여러 값에 대한 변수를 테스트 할 때는 Select Case 문을 사용하는 것이 더 쉽습니다.

문제가있는 이유는 가능한 모든 값을 충족시키지 못했고 논리가 특정 값에 대해 충돌하기 때문입니다. 0 > Handicap Or Handicap < 5.

Select Case Handicap 
     Case Is < 0 
      TxtRank.Text = "Championship" 
     Case Is < 5 
      TxtRank.Text = "Duffer" 
     Case Is < 10 
      TxtRank.Text = "Average" 
     Case Else 
      TxtRank.Text = "Hacker" 
    End Select 
+0

OP의 원래 코드 (작동한다면)는 4.5의 값을 처리하지 않지만 쉬울 수도 있습니다. Jus 'sayin'... –

+0

@ TheBlueDog - 공평한 의견 -이 문제를 해결할 수있는 답변을 수정했습니다. –

관련 문제