如何在 C# 中将用户输入添加到二维数组

Posted

技术标签:

【中文标题】如何在 C# 中将用户输入添加到二维数组【英文标题】:how to add user input to 2d array in C# 【发布时间】:2021-08-02 23:49:55 【问题描述】:

我正在尝试编写一个小程序来计算来自用户的两个向量的相加并将其存储在数组中。 我想从用户那里得到两个 X 和 Y(比如 x,y),然后将它们加在一起。

我尝试像这样使用二维数组

int[,] array = new int[0, 1] ;

但我希望用户输入它的值。 我对 c# 的了解不够,所以如果有人知道我该如何解决这个问题,我会向你求助

【问题讨论】:

【参考方案1】:

如果你想从用户那里得到一个向量,你可以尝试让用户提供它的组件,用一些分隔符分隔,例如

  private static int[] ReadVector(string title) 
    while (true)  // keep asking user until valid input is provided
      if (!string.IsNullOrEmpty(title))
        Console.WriteLine(title);

      string[] items = Console
        .ReadLine()
        .Split(new char[]  ' ', '\t', ';', ',' , 
               StringSplitOptions.RemoveEmptyEntries);

      if (items.Length <= 0) 
        Console.WriteLine("You should provide at least one component");

        continue; 
       

      bool failed = false; 
      int[] result = new int[items.Length];

      for (int i = 0; i < items.Length; ++i) 
        if (int.TryParse(items[i], out int value))
          result[i] = value;
        else 
          Console.WriteLine($"Syntax error in i + 1 term");
          failed = true;

          break;
          
      

      if (!failed)
        return result; 
    
  

然后你可以像这样使用这个例程:

  // We don't want any 2D matrices here, just 2 vectors to sum
  int[] A = ReadVector("Please, enter vector A");
  int[] B = ReadVector("Please, enter vector B");  

  if (A.Length != B.Length) 
    Console.WriteLine("Vectors A and B have diffrent size");
  else 
    // A pinch of Linq to compute C = A + B 
    int[] C = A.Zip(B, (a, b) => a + b).ToArray();

    Console.WriteLine($"[string.Join(", ", A)] + ");
    Console.WriteLine($"[string.Join(", ", B)] = ");
    Console.WriteLine($"[string.Join(", ", C)]");  
    

编辑:当然,您可以借助古老的 for 循环而不是 Linq 来对向量求和:

   int[] C = new int[A.Length];

   for (int i = 0; i < A.Length; ++i)
     C[i] = A[i] + B[i]; 

【讨论】:

большое спасибо,这正是我想要的并且完美运行,但仍然不太了解整个代码,所以我会尝试一遍又一遍地完成它。 还有一个问题,除了使用Linq之外,还有其他方法可以做最后的计算吗? @Rasta Mosi:当然,您可以使用旧的for 循环来对相应的组件求和 C[0]=A[0]+B[0]; C[1]=A[1]+B[1]; 或者你可以使用for(int i=0;i&lt;2;i++)C[i]=A[i]+B[i];

以上是关于如何在 C# 中将用户输入添加到二维数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 从表中的二维数组输出值

C# 用户输入到字节数组

如何从动态创建的表格视图单元格的输入字段中将数据检索到数组

如何根据用户输入在 C# 中对对象数组进行排序?

C#二维数组验证表单中的条目

如何在 C# 中关闭这个循环二维数组?