2017-08-26 53 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