2017-11-25 1 views
-3

저는 .NET을 배우는 초보자입니다.console.readline()을 사용하여 정수를 읽는 방법은 무엇입니까?

정수를 콘솔 readline에서 구문 분석하려고 시도했지만 형식 예외가 표시됩니다.

내 코드 :

using System; 
namespace inputoutput 
{ 
    class Program 
    {   
     static void Main() 
     { 
      string firstname; 
      string lastname; 
     // int age = int.Parse(Console.ReadLine()); 
      int age = Convert.ToInt32(Console.ReadLine()); 
      firstname = Console.ReadLine(); 
      lastname=Console.ReadLine(); 
      Console.WriteLine("hello your firstname is {0} Your lastname is {1} Age: {2}", 
       firstname, lastname, age); 
     } 
    } 
} 
+2

이 코드는 저에게 효과적입니다. 첫 번째 줄에 유효한 정수를 입력 하시겠습니까? 아마도 문자열 변수에 readline을 넣고 구문 분석하기 전에 값을 확인할 수 있습니까? – Chris

+0

가능한 중복 : https://stackoverflow.com/questions/24443827/reading-an-integer-from-user-input – cSteusloff

+0

예. 나를 위해 일했습니다. 유효한 정수를주었습니다. 많이 감사합니다. - Grant Winney –

답변

1

는 그 형식의 예외를 던지고 경우

int age = Convert.ToInt32(Console.ReadLine()); 

하는 텍스트 입력이 시도 처리 할 경우 입력을 int으로 구문 분석 할 수 없음을 의미합니다. 너는 int.TryParse()과 같은 것으로 더 효과적으로 이것을 확인할 수있다. 예 :

int age = 0; 
string ageInput = Console.ReadLine(); 
if (!int.TryParse(ageInput, out age)) 
{ 
    // Parsing failed, handle the error however you like 
} 
// If parsing failed, age will still be 0 here. 
// If it succeeded, age will be the expected int value. 
0

귀하의 코드가 절대적으로 정확하지만, 귀하의 의견은 당신이 오류를 얻고있다, 그래서 정수되지 않을 수 있습니다. try catch 블록에서 변환 코드를 사용하거나 int.TryParse를 사용하십시오. 당신은 정수로 숫자 입력 문자열을 변환 할 수 있습니다

+1

유효한 정수를 제공합니다. 고맙습니다. –

+0

TryPars가 더 좋고, 오버 헤드가 적습니다. – Sybren

-2

은 (코드가 정확한지) :

int.TryParse(Console.ReadLine(), out var age); 
+1

말 그대로 질문의 코드입니다. 질문에 어떻게 대답합니까? – UnholySheep

+0

이미 원래 코드가 작성되었습니다. – lucky

+0

그건 C# 7.0이고 잘 작동합니다. – cSteusloff

0

이와 같이 정수를 제외한 잘못된 형식을 처리 할 수 ​​있습니다.

 int age; 
     string ageStr = Console.ReadLine(); 
     if (!int.TryParse(ageStr, out age)) 
     { 
      Console.WriteLine("Please enter valid input for age ! "); 
      return; 
     } 
관련 문제