2017-08-26 52 views
-2
double myDouble = double.Parse(Console.ReadLine()); 
Console.WriteLine(myDouble); 
//user inputs 3.14 for example 

當代碼運行,並且用戶插入一個雙值像3.14控制檯崩潰。爲什麼是這樣?另外請記住,我對編程還很陌生,仍然在學習基礎知識。在c#控制檯崩潰,每當我插入一個雙值

+1

與嘗試雙myDouble = double.Parse(到Console.ReadLine()); –

+0

@HaDoan我忘記把控制檯放在這個例子中對不起xD –

+0

如何輸入Console.Read.Line()。即使智能感知也沒有提供。 double myDouble = double.Parse(Console.ReadLine()); Console.WriteLine(myDouble); – Amit

回答

0

1.您的文化可能確定您應該使用','分隔符而不是'.'。有2個小數點分隔符,因爲在一個情況下,你可以象132,532.34這意味着:132532.34

2.如果要檢查用戶是否處於良好的格式寫的,用double.TryParse相反,它會返回0如果解析失敗。

3,如果您想分析雙帶任何分隔使用類似:

Double myDouble; 
Double defaultValue = 0; 
var value = Console.ReadLine(); 

if (!double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.CurrentCulture, out myDouble) && 
    // Then try in US english 
    !double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out myDouble) && 
    // Then in neutral language 
    !double.TryParse(value, System.Globalization.NumberStyles.Any, CultureInfo.InvariantCulture, out myDouble)) 
{ 
    myDouble = defaultValue; 
} 
Console.WriteLine(myDouble); 
+0

['Double.TryParse'](https://msdn.microsoft.com/en-us/library/3s27fasw(v = vs.110).aspx)返回一個'bool'(如果它返回一個整數, t能夠像你在你的代碼中一樣使用它) – UnholySheep

+0

我的意思是,它將返回0出雙(double.TryParse(文本,出) – sTrenat

+0

謝謝你的工作! –

-3
Console.WriteLine(myDouble.ToString()); 

這應該做的伎倆。

+2

首先'ToString()'不是'toString()'。其次,這不是問題。 – FCin

+0

['Console.WriteLine'](https://msdn.microsoft.com/en-us/library/219hw6yx(v = vs.110).aspx)對'double'參數有重載,所以無論你怎麼想使用它會導致崩潰(或拋出異常)? – UnholySheep