2012-09-27 2 views
1

사용자 입력이 내 프로그램에서 숫자가 아닌지 여부를 확인하려면 Integer.TryParse 메서드를 사용하고 있습니다. 1) 사용자 입력이 숫자 인 경우 프로그램이 진행하고 사용자 입력 범위가 0에서 9까지인지 확인합니다. 2) 사용자가 숫자가 아닌 입력을 입력하면 프로그램이 "invalid 입력 "을하고 처음부터 시작하도록 사용자에게 요청하십시오. VB2008 - Integer.TryParse 메서드 오류 콘솔 응용 프로그램

다음

내 코드입니다 :

그러나, 사용자가 숫자가 아닌 입력을 입력 할 때, 프로그램이 계속할 수 없습니다 를 Sub Main()

Dim sevenNumbers As Integer() 
    sevenNumbers = New Integer(6) {} 
    Dim index As Integer 
    Dim number As Integer 
    Dim reEnter As Boolean = True 

    Console.WriteLine("Please enter 7 integers: ") 
    Console.WriteLine("<ATTENTION: FROM 0 TO 9 ONLY>") 
    Console.WriteLine() 

    While reEnter 
     For index = 0 To 6 

      Console.WriteLine("Please enter the integer no." & "{0}" & " : ", index + 1) 'Prompt user to enter 7 integers. 
      sevenNumbers(index) = Console.ReadLine() 'The 7 integers are stored in an array. 

      If Integer.TryParse(sevenNumbers(index), number) Then 
       While sevenNumbers(index) < 0 Or sevenNumbers(index) > 9 
        Console.WriteLine("<invalid input>") 
        Console.WriteLine() 
        Console.WriteLine("------------------------------------------") 
        Console.WriteLine("<Please re-enter the 7 integers>") 
        Console.WriteLine("------------------------------------------") 
        Console.WriteLine() 
        reEnter = True 
        Exit For 
       End While 

      Else 
       Console.WriteLine("<invalid input>") 
       Console.WriteLine() 
       Console.WriteLine("------------------------------------------") 
       Console.WriteLine("<Please re-enter the 7 integers>") 
       Console.WriteLine("------------------------------------------") 
       Console.WriteLine() 
       reEnter = True 
       Exit For 

      End If 

      reEnter = False 

     Next 
    End While 

최종 하위 및 오류를 보여줍니다 닫을 것을 강요 당했다.

은 내가
Console.Write("enter num:") 
    Dim input = Console.ReadLine 

    If Integer.TryParse(input, num) Then 
     Console.WriteLine("valid. num = " & num) 
    Else 
     Console.WriteLine("invalid") 
    End If 
End Sub 

작동을 수행하고 내가 잘못 내 코드의 어떤 부분이 궁금 정수

으로이

를 Sub Main() 희미한 납입을 시도 ??

감사합니다.

답변

0

두 개의 코드 샘플이 다릅니다. 두 번째 시도에서는이 작업을 수행 :

Dim input = Console.ReadLine 
If Integer.TryParse(input, num) Then 

위의 코드는 String (Console.ReadLine 때문에 리턴한다 String)이 될 것이다 input라는 변수로 읽습니다. 그런 다음 문자열을 숫자로 구문 분석하려고합니다.

그러나, 원래의 코드에서,이 (일부 명확성을 위해 생략 선) 수행이 경우

Dim sevenNumbers As Integer() 
sevenNumbers = New Integer(6) {} 
... 
sevenNumbers(index) = Console.ReadLine() 

을, 당신은 당신이 명시 적으로 Integer 선언 한 변수로 읽고있다. 사용자가 "abc"을 입력하면이 시점에서 변환이 실패합니다. 심지어 TryParse으로을 얻지 못합니다. 입력을 완료 할 수 없기 때문입니다.

정수로 읽는 대신 String 변수를 읽고 그 값을 Integer (두 번째 코드에서와 같이)으로 구문 분석해야합니다.

당신은 오류가 실제로 디버깅 할 때 발생 줄의 메모를 복용하여 자신을 발견 할 수 : 당신은주의해야 그 프로그램 ReadLine에 충돌의 TryParse하지.

+0

네,이 변경 sevenNumbers을하고 일을한다! 고맙습니다! – user1702495

0

음. 이 라인 :

sevenNumbers(index) = Console.ReadLine() 

Integer의 배열에 읽은 어떤 텍스트 저장됩니다. 컴파일 중이면 나중에 코드가 나올 때까지 변환을 제어하기에는 너무 늦습니다. 벌써 일어 났어.

sevenNumbersString()일까요?

는 (당신은 정말 OPTION STRICTOPTION EXPLICIT 켜한다고 -이 코드를 컴파일 할 때 당신을 위해이 같은 문제를 발견한다) 대신 정수를 사용하는 문자열에

+0

팁 주셔서 감사합니다. 이제 프로그램을 실행할 수 있습니다! – user1702495