首页 > 解决方案 > 如何在 c# c sharp 中创建一个二维数组 [n,3] 从用户那里获取字符串输入

问题描述

我编写了这段代码,将元素垂直和水平相加。我的问题是从字符串输入创建二维数组。"2 1 6"用户应该在一行上输入一个字符串(用空格分隔),我必须将每个数字转换为整数。代码的第一个输入表示带有类似 的字符串的下一行的数量"2 1 6"。例如,输入:

2           // the first input line 
2 1 6      // the 2nd input line with the string
3 1 8     //  the 3nd input line with the string

数组应该是:int [,] arr = {{2,1,6},{3,1,8}} 我的代码:

using System;

namespace Exercises
{
    class Program
    {
        static void Main()
        {
            string input1 = Console.ReadLine();
            int n = Convert.ToInt32(input1);
            
            string input2 = Console.ReadLine();
            string[,] strArr = new string[n, 3];
  
            int rows, cols;                   

            for (int i = 0; i < n; i++)
            {

                for (int j = 0; j < 3; j++)
                {
                    strArr[i, j] = input2.Split(' ')[i];                    
                }
            }            
            rows = strArr.GetLength(0);
            cols = strArr.GetLength(1);

            int[,] intArr = new int[strArr.GetLength(0), strArr.GetLength(1)];
            
            for (int i = 0; i < strArr.GetLength(0); i++)
            {
                for (int j = 0; j < strArr.GetLength(1); i++)
                {
                    intArr[i, j] = Convert.ToInt32(strArr[i, j].ToString());
                }
            }

            for (int i = 0; i < rows; i++)
                {
                    int sumRow = 0;
                    for (int j = 0; j < cols; j++)
                    {
                        sumRow += intArr[i, j];
                    }
                    Console.WriteLine("Livada " + (i + 1) + ": " + sumRow);
                }
            string[] treesName = { "Meri", "Peri", "Ciresi" };
            for (int i = 0; i < cols; i++)
             {
                    int sumCol = 0;
                    for (int j = 0; j < rows; j++)
                    {
                        sumCol += intArr[j, i];

                    }
                    Console.WriteLine($"{treesName[i]}: " + sumCol);
                }


            }

        }
    }

这里有人可以帮助我吗?谢谢!

标签: c#arraysstringmatrixinput

解决方案


该程序从 中读取数字Console并填充数组。这里的关键是使用该.Split()方法将行输入拆分为字符串数组,由空格分隔。

class Program
{
    static void Main(string[] args)
    {
        var input = Console.ReadLine();
        var n = int.Parse(input);

        int[,] intArr = new int[n, 3];

        for (int i = 0; i < n; i++)
        {
            input = Console.ReadLine();
            var parts = input.Split(' ');

            for (int j = 0; j < 3; j++)
            {
                intArr[i, j] = int.Parse(parts[j]);
            }                
        }
        // intArray has the values from the input
    }
}

推荐阅读