【问题标题】:how to take user input and assign to array如何获取用户输入并分配给数组
【发布时间】:2015-05-16 22:43:10
【问题描述】:

假设用户输入了一行“1 2 3 4”,我如何将它分配给一个数组,使得array[0] 的值为 1,array[1] 的值为 2,依此类推?到目前为止,我只在用户在每个值之后按下回车键时才设法分配值,而不是当值在一行中时,这是我想要实现的。

double[,] array = new double[4,4];

Console.Write("Enter 16 digits: ");
for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 4; j++)
    {
        array[i, j] = Convert.ToDouble(Console.ReadLine());
    }
}

【问题讨论】:

标签: c# arrays matrix assign


【解决方案1】:

你要先分行:

string[] line = Console.ReadLine().Split(' ');

那么它是微不足道的

for (int i = 0; i < 4; i++)
{
    for (int j = 0; j < 4; j++)
    {
        array[i, j] = double.Parse(line[i * 4 + j];
    }
}

【讨论】:

    【解决方案2】:

    你应该添加类似的东西

     var line = Console.ReadLine();
     var lineArray = line.Split(new Char[]{' '});
    

    这将为您提供 lineArray 中单个字符串元素元素的数组,在 [0] 处带有“1”等。如果您想将其转换为双精度数组,您可以这样做

    var arrayOfDouble = lineArray.ToList().ConvertAll(x => Double.Parse(x)).ToArray();
    

    这里有一个解释:

    1. 拆分方法。这是一种可用于 String 对象的方法。它需要一串字符(我只有一个元素'',空格字符的数组)并在这些字符出现时拆分提供的字符串。它返回一个由拆分出来的项目组成的数组。

    2. 对 ConvertAll 的调用。

      • 这需要一个函数,在这种情况下,在 lambda 中动态指定 表示法(即 x => Double.Parse(x) 位),它允许 根据需要指定一个函数。功能 对一个值 x 征税,并尝试将该值解析为 Double。由于 x 来自一个字符串数组,x的类型是String。呼吁 Parse 尝试从传递的字符串 x 中获取 Double。
      • 因为 List 对象可以使用 ConvertAll(),所以我首先通过 ToList() 将数组转换为 List。 lambda 会在列表的每个元素上调用,因此原始 lineArray 中的每个字符串都将传递给 Double.Parse 以转换为双精度。将生成一个新的 Double 列表。
      • 最后,我将生成的双精度列表重新设置为 通过 ToArray() 进行数组。

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 2011-11-08
      • 2020-03-06
      相关资源
      最近更新 更多