2017-08-06 84 views
-2

我想在c#中使用TryParse方法。 我正在創建一個程序,它接受來自用戶的輸入,如果它是整數,則返回一個變量。當輸入有效整數時,程序工作正常,但一旦我輸入無效號碼如12sd,它將返回a=0。錯誤在哪裏?爲什麼在輸入至少一次無效整數後a = 0的值

public int checkValidNumber() 
{ 
    Program obj = new Program(); 
    int a = 0; 
    string str = Console.ReadLine(); 
    if(!int.TryParse(str, out a)) 
    { 
     Console.WriteLine("Please enter a valid number"); 
     obj.checkValidNumber(); 
    } 
    return a; 
} 

使用

Program obj = new Program(); 
int a = obj.checkValidNumber(); 

其中作爲計劃是A類,考慮一個控制檯應用程序,請

回答

2

此時應更換obj.checkValidNumber();與主呼叫:

a = obj.checkValidNumber(); 
//Or 
return obj.checkValidNumber(); 

此外checkValidNumber是的成員函數10,沒有理由在每次調用

public int checkValidNumber() 
{ 
    int a=0; 
    if(!int.TryParse(Console.ReadLine(), out a)) 
    { 
     Console.WriteLine("Please enter a valid number"); 
     return checkValidNumber(); 
    } 
    return a; 
} 

創造Program一個新的實例,但可能是更好的使用while循環對於這一點,而不是一個遞歸調用:如果使用

public int checkValidNumber() 
{ 
    int a=0; 
    while(!int.TryParse(Console.ReadLine(), out a)) 
    { 
     Console.WriteLine("Please enter a valid number"); 
    } 
    return a; 
} 

C#7.0請參閱new usage of an out variableTryParse

+0

感謝您的指導。你建議不要在方法中使用對象,並且使用while循環都有幫助。 –

+0

@Arunkumar - 很高興幫助:)如果這是你正在使用的c#7.0 –

相關問題