我一直在尋找已經回答了這個問題的解決方案,但他們沒有一個似乎與我的代碼一起工作。我只是剛剛開始在C#中編寫代碼,而且我很困惑我的代碼是如何工作的。C#,將字符串轉換爲double的最佳方式是什麼?
using System;
namespace dt
{
class Averager
{
static void Main()
{
var total = 0.0;
int runningNumbers = 0;
while(true)
{
Console.Write("Enter a number or type \"done\" to see the average: ");
if(Console.ReadLine().ToLower() == "done")
{
var average = (total/runningNumbers);
Console.Write("Average: " + average);
break;
}
else
{
var tempNew = Double.Parse(Console.ReadLine());
total += tempNew;
runningNumbers += 1;
continue;
}
}
}
}
}
在我上面的代碼中,我試圖將輸入的字符串轉換爲double。當我運行程序時,它循環一次,程序凍結。如果我在控制檯輸入,它給了我這個錯誤:
Unhandled Exception:
System.FormatException: Input string was not in a correct format.
at System.Number.ParseDouble (System.String value, System.Globalization.NumberStyles options, System.Globaliz
at System.Double.Parse (System.String s, System.Globalization.NumberStyles style, System.Globalization.Number
at System.Double.Parse (System.String s, System.IFormatProvider provider) [0x0000c] in at dturato.Averager.Main() [0x00058] in <249eeff07c4a4744a6b024a0c9b6c23b>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.FormatException: Input string was not in a correct format.
at System.Number.ParseDouble (System.String value, System.Globalization.NumberStyles options, System.Globaliz
at System.Double.Parse (System.String s, System.Globalization.NumberStyles style, System.Globalization.Number
at System.Double.Parse (System.String s, System.IFormatProvider provider) [0x0000c] in at d.Averager.Main() [0x00058] in <249eeff07c4a4744a6b024a0c9b6c23b>:0**
這一點,從我目前爲止的研究,意味着字符串沒有被轉換爲雙出於某種原因。如果任何人都可以提供幫助或提供任何好的解決方案,謝謝。
您是否試過單步執行代碼以查看拋出異常時傳入'tempNew'的內容? – greenjaed
請仔細閱讀[MCVE]關於發佈代碼的指導(帖子中的帖子顯然不是最小的)。還要確保提供你認爲「更好」的東西(或者當你需要「工作解決方案」時不要求「最好」)。 –