如何获取用户输入并分配给数组

时间:2015-05-16 22:43:11

标签: c# arrays matrix assign

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

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());
    }
}

2 个答案:

答案 0 :(得分:2)

你必须首先拆分该行:

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];
    }
}

答案 1 :(得分:1)

您应该添加类似

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

这将在lineArray中为您提供一系列单独的字符串元素元素,其中&#34; 1&#34;在[0],等等。如果你想将它转换为双打数组,你可以

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

以下是解释:

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

  2. 对ConvertAll的调用。

    • 这需要一个函数,在这种情况下,在lambda中动态指定 符号(即,x =&gt; Double.Parse(x)位),它允许 根据需要随时指定一个功能。功能 对值x进行计算,并尝试将该值解析为Double。从x开始 来自一个字符串数组,x的类型是String。打电话给 Parse尝试从传递的字符串中获取Double,x。
    • 因为ConvertAll()在List对象上可用,所以我首先通过ToList()将数组转换为List。 lambda在list的每个元素上被调用,因此原始lineArray中的每个字符串都将被传递给Double.Parse以转换为double。将会出现一个新的Double列表。
    • 最后,我将结果列表中的双打重新组合成一个 数组通过ToArray()。