【问题标题】:How to fill the array of integers from console input如何从控制台输入填充整数数组
【发布时间】:2014-02-14 17:39:08
【问题描述】:

假设我知道用户将输入多少个数字。我有一个 int 数组,我想用用户输入的整数填充它,这些整数除以特定字符,例如空格。我设法以这种方式解决了它。

int[] numbers = new int[5];
string[] input = Console.ReadLine().Split(' ');
for (int i = 0; i < numbers.Length; ++i)
    numbers[i] = int.Parse(input[i]);

我想问你,还有其他更好的方法吗?

【问题讨论】:

  • 这只是家庭作业吗?因为你正在尝试的东西没有实际的理由,没有某种错误陷阱。
  • 只是为了提高算法思维。当然在实际程序中我会检查是否有任何错误。

标签: c# arrays input console


【解决方案1】:

你可以使用 Linq:

var numbers = Console.ReadLine().Split(' ').Select(token => int.Parse(token));

// if you must have it as an array...
int[] arr = numbers.ToArray();

这基本上和你的代码做同样的事情,只是更简洁。

您还可以通过处理用户输入非数字的情况(这会导致int.Parse() 引发异常)来使您的代码更加健壮。

【讨论】:

    【解决方案2】:

    建议1:如果您想从space 分隔的单行中读取所有值,那么我建议您使用command line arguments。这样您至少可以避免在程序中使用字符串数组,因为命令行参数存储在 Main() 方法字符串数组参数中。

    建议 2: 在将值解析为 Int 时,最好检查解析是否成功,这样如果解析失败(由于整数无效),我们可以存储零或一些默认值。

    Int32.TryParse() 让您知道解析是否成功。

    试试这个:

      static void Main(string[] args)
      {
        int[] numbers = new int[args.Length];
        int temp;
        for(int i=0;i<args.Length;i++)
        {
            if (Int32.TryParse(args[i],out temp))
            {
                numbers[i] = temp;
            }
            else
            {
                numbers[i] = 0;
            }
         }
       }
    

    【讨论】:

      【解决方案3】:

      让我试试,只需阅读控制台行并按空格分隔。使用 Array 类的 ConvertAll 方法。

      int[] myArray = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
      

      【讨论】:

        【解决方案4】:

        即使Console.Read() 的返回值返回一个整数,它也不是那么简单。它将返回您输入的字符的整数表示形式。

        为了检索元素的数量,正如您的代码尝试做的那样。您应该将一小部分重构为:

        Console.WriteLine("enter no of elements");
        c = int.Parse(Console.ReadLine());
        

        请注意,如果您输入的不是数字,这段代码可能会引发异常

        【讨论】:

          【解决方案5】:

          您可以使用 StringTokenizer 对整行进行标记,然后使用 parseInt()。

          【讨论】:

            猜你喜欢
            • 2012-12-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-22
            相关资源
            最近更新 更多