繁体   English   中英

C#控制台输入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM