2017-11-02 13 views
0

사용자가 잘못된 입력을 입력 한 후에 프로그램을 계속 실행하고 싶습니다. 사용자가 문자열을 입력하면 오류 메시지가 표시되고 프로그램이 닫히지 만 사용자가 유효한 입력을 계속 입력하도록 프로그램에 요청합니다. 나는 try/catch를 do/while 안에 넣으려고했지만 나에게는 효과가없는 것 같다.C# 잘못된 입력 후 프로그램이 계속 실행되도록하는 방법

 Int16 dollars; 
     try 
     { 
      do 
      { 
       Console.WriteLine("Enter a value, or 0 to exit."); 
       dollars = Convert.ToInt16(Console.ReadLine()); 
       if (dollars >= 1) 
       { 
        Console.WriteLine("your current balance is"); 
        myBank.addMoney(dollars); 
        myBank.getValue(); 
       } 
       else if (dollars < 0) 
       { 
        Console.WriteLine("You have entered a negative number, your current balance is"); 
        myBank.getMoney(dollars); 
        myBank.getValue(); 
       } 

      } while (dollars != 0); 
     } 
     catch 
     { 
      Console.WriteLine("The value you have entered is invalid"); 
      Console.ReadKey(); 
     } 
+3

''do/do '안에 try/catch를 넣으려고했는데 - 여기에 표시된 코드에 따르지는 않았습니다. 하지만 그건 당신이 할 수있는 일입니다. 루프의 오류를 처리하고 로직을 계속하십시오. 또는 더 이상적인 대안으로'int.TryParse()'를 살펴보고 예외를 던지지 않고 입력을 테스트 해보자. 문제를 근본적으로 렌더링합니다. – David

+0

int.TryParse보세요 (Convert.ToInt16 대신 사용할 수 있습니다). Int16 유형 사용을 중단하십시오. ;-) –

+0

'convert' 클래스 대신'Int16.TryParse'를 사용할 필요가 있습니다 –

답변

3

입력을 변환하는 대신 TryParse을 사용하십시오.

Console.WriteLine("Enter a value, or 0 to exit."); 
var input = Console.ReadLine(); 
var ok = Int16.TryParse(input, out dollars); 
if (!ok) 
{ 
    Console.WriteLine("Please input a valid number."); 
    continue; 
} 
+0

사용자가 특별히 Int16을 사용했습니다.이를 반영하도록이 코드를 조정합니다. –