c#从控制台读取矩阵(例如从文本文件复制/粘贴)
本文关键字:文件 文本 复制 粘贴 读取 控制台 | 更新日期: 2023-09-27 18:15:43
我想知道哪是读取矩阵直接输入到控制台作为字符串从文本文件复制/粘贴的最佳做法?
这是一个矩阵的例子,但是作为一个整体,在末尾有新行,行与行之间没有新行(我不知道如何在这里表示矩阵,对不起):
5 6 8 12 34
13 4 9 20 3
如果有一个int[,]作为结果就太好了,这样就可以在控制台上写一些嵌套循环之类的东西。
提前感谢,并抱歉新手问题(可能)!
class Program
{
static void Main(string[] args)
{
Console.CancelKeyPress += (o, e) =>
{//prevent from stopping after Ctrl+C
e.Cancel = true;
};
Console.WriteLine("'n Enter a matrix. Press Ctrl+C when you will have ended.");
string text = Console.In.ReadToEnd();
Console.WriteLine("'nParsing...'n");
int[,] res2a;
try
{
res2a = parse(text);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message + ",'n " + ex.StackTrace);
return;
}
Console.WriteLine("'nYou enter: 'n");
for (int i = 0; i < res2a.GetLength(1); i++)
{
for (int j = 0; j < res2a.GetLength(0); j++)
Console.Write("0x{0:X} ", res2a[j, i]);
Console.WriteLine();
}
}
static int[,] parse(string text)
{
int max_len = 0;
List<List<int>> res2x = new List<List<int>>();
string [] tmp1 = text.Split(new char []{''n', ''r'}, StringSplitOptions.RemoveEmptyEntries);
foreach(string s1 in tmp1)
{
string [] tmp2 = s1.Split(new char [] {' '}, StringSplitOptions.RemoveEmptyEntries);
res2x.Add(new List<int>(tmp2.ToList().ConvertAll<int>((s)=>int.Parse(s.Trim()))));
if (tmp2.Length > max_len)
max_len = tmp2.Length;
}
int[,] res2a = new int[max_len, tmp1.Length];
for (int j = 0; j < tmp1.Length; j++ )
for (int i = 0; i < res2x[j].Count; i++)
res2a[i, j] = res2x[j][i];
return res2a;
}
}
它看起来有点丑,但是我现在没有时间。也许以后我可以改进一下。