2014-02-26 27 views
-4

我儘量不要在代碼中使用else,只使用if。但是當我運行它並輸入「Q」時,它說在total += Convert.ToInt32(input);轉換的錯誤。有沒有解決的辦法?不使用其他

do 
{ 
    Console.Clear(); 
    Console.WriteLine("Enter a number or Q to quit", input); 
    input = Console.ReadLine(); 

    if (input.ToUpper() == "Q") 
    { 
     Console.WriteLine("Press any key to continue"); 
     Console.ReadKey(); 
    } 
    else 
    { 
     total += Convert.ToInt32(input); 
     numbersEntered++; 
     average = ((double)total/numbersEntered); 
     Console.WriteLine("Total: {0}\t Numbers Entered: {1}\t Average: {2}\t", total, numbersEntered, average); 
     Console.ReadKey(); 
    } 
} 

while (input.ToUpper() != "Q"); 
+1

您的示例顯示了'else'的合理用法。從給定的代碼沒有辦法弄清楚如何在反向條件下錯誤地將'else'分支轉換爲'if'。請更新樣本......如果可能,請添加避免「其他」的好理由(如「我的任務需要......」)。 –

+0

當您達到if語句時,輸入值是多少?似乎它可能不僅僅是「Q」。 – Chris

+1

我已經在一個新的控制檯應用程序中運行了它,並且當輸入'Q'或'q'時它的功能正常並且按預期退出。 –

回答

2

嘗試使用break;停止循環,使你不需要else

do{ 
    Console.Clear(); 
    Console.WriteLine("Enter a number or Q to quit", input); 
    input = Console.ReadLine(); 
    if (input.ToUpper() == "Q"){ 
     Console.WriteLine("Press any key to continue"); 
     Console.ReadKey(); 
     break; 
    } 
    total += Convert.ToInt32(input); 
    numbersEntered++; 
    average = ((double)total/numbersEntered); 
    Console.WriteLine("Total: {0}\t Numbers Entered: {1}\t Average: {2}\t", total, numbersEntered, average); 
    Console.ReadKey(); 
} while (input.ToUpper() != "Q"); 
+0

雖然輸入是除Q之外的其他任何非整數字符,但這會引發異常。 – davidsbro

+0

@davidsbro正確,它會。我只是回答了他有關else語句的問題。 – JClaspill

+0

好的。我只是想知道爲什麼你沒有解決這個潛在的問題。 – davidsbro

0

使用TryParse測試輸入是否是數字。這是一個int示例(您需要自己定義out變量)。

else if (Int32.TryParse(input,out inputVal) {