[英]C# console input
我的控制台输入出现问题。 代码是:
using System;
using System.Linq;
class Training
{
static void Main()
{
double[] arr = Console.ReadLine().Split(' ').Select(double.Parse).ToArray();
int[] roundedNums = new int[arr.Length];
for (int i = 0; i < arr.Length; i++)
{
roundedNums[i] = (int)Math.Round(arr[i], MidpointRounding.AwayFromZero);
}
for (int i = 0; i < roundedNums.Length; i++)
{
Console.WriteLine("{0} => {1}", arr[i], roundedNums[i]);
}
}
}
当我启动程序时,如果使用则会出现异常。 而不是,(例如:如果我输入3.5,则会出现错误,但如果输入3,5,则程序可以正常运行)。 我正在使用Visual Studio Community 2015。
我该如何解决?
您可以更改代码以使用特定区域性。 例如不变文化,然后将其视为'.'
作为小数点分隔符, ','
作为组分隔符。
您可以这样应用InvariantCulture
:
double[] arr = Console.ReadLine()
.Split(' ')
.Select(x => double.Parse(x, CultureInfo.InvariantCulture))
.ToArray();
一些区域性默认将空格( ' '
)用作小数点或组分隔符以及'.'
或','
被解释为无效输入。
您可以使用两个属性来查找默认使用的分隔符:
Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator;
Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator;
替换为:
double[] arr = Console.ReadLine().Split('.').Select(double.Parse).ToArray();
与您这行:
double[] arr = Console.ReadLine().Split(' ').Select(double.Parse).ToArray();
工作正常吗? 让我知道。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.