c# - 如何在 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);
}
}
}
}
这里有人可以帮助我吗?谢谢!
解决方案
该程序从 中读取数字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
}
}