2013-01-13 6 views
0

사용자 입력이 숫자인지 확인하고 싶습니다. 예라면 그 기능을 계속 실행하여 다른 사람에게 경고하고 다시 실행하고 싶습니다.사용자 입력이 숫자인지 확인하십시오.

Console.WriteLine(String.Concat("choose your action" ,Environment.NewLine , 
           "1.Deposit", Environment.NewLine, 
           "2.Withdraw", Environment.NewLine, 
           "3.CheckAccount")); 
string c = Console.ReadLine(); 
int value = Convert.ToInt32(c); 

if (value==char.IsLetterOrDigit(value)) //<----- no good why? 
{ 
    switch (value) 
    { 
     case 1: 
      Deposit(); 
      return; 
     case 2: 
      Withdraw(); 
      return; 
     case 3: 
      CheckAccount(); 
      return; 
    } 
} 
+0

'String.Concat' 메이트를 사용할 필요가 없습니다! 연산자에는 문자열 연결 연산자'+'가 있는데,'String.Concat'에 대한 호출에 최적화되어 있습니다. – antonijn

답변

10

그냥 사용

string c = Console.ReadLine(); 
int value; 
if (int.TryParse(c, out value)) { /*Operate*/ } 

편집 : 저자의 의견에 코드를 적용하기 :

if (int.TryParse(c, out value) && value >= 1 && value <= 3) { /*Operate*/ } 
+0

aww sweet, its working .thanks :))))) – TBK

+0

수표에 수를 추가하여 어떻게 1-3이 아닌 float 또는 double인지 확인하는 방법은 무엇입니까? – TBK

+0

@ user1942298'int.TryParse'는 숫자가 정수가 아닌 경우'false'를 반환합니다. 두 번째 요청에 맞게 게시물을 편집했습니다. – Mir

1

int 값 = Convert.ToInt32 (C); c가 정수로만 구성된 문자열이 아닌 경우이 작업은 실패합니다. 이 상황을 처리하려면 try catch를 사용하십시오.

+0

'TryParse'를 사용하면 훨씬 빠릅니다. 나는 .NET에서 테스트를하지 않았지만, Mono는이 테스트를 위해 TryParse에 대해 479 밀리 초, 메서드에 649 밀리 초를 주었다. http://pastebin.com/HfLjqTqg. – antonijn

관련 문제