C#控制台输入-OJ
2021-02-06 08:16
标签:题目 怎么 c++ style 实现 暂停 行数据 只读 pre --当时在某计科实验室的时候,大家都用c++,我自己用着C#(半吊子都算不上那种),什么都不懂的。实验室出规则说每星期要做个OJ比赛,我想着做就做吧,C#应该也是可以的,但是看到题目就很蒙了啊,先不管要怎么算出结果,连输入都不会,从控制台输入一串数字,这个怎么实现/???最后的结果就是所有的题目我一次都没有做出来,,,然后,,,灰溜溜走人去做数学建模去了。 最近又开始跟着刘铁猛老师的C#入门视频和C#入门经典一起系统学习,看了1/3突然发现是不是该去做做OJ的题目,然后想起了上述的悲催往事,现在就来解决吧: C# system命名空间下的console类下的read方法有三个,分别是Console.Read(), Console.ReadKey(), Console.ReadLine(), 很显然这个方法是没办法处理我们读取一行数据的需求的。 显然也是不满足我们的需求的,唯一剩下可能的方法就是Console.ReadLine(),该方法的返回值是一个字符串,只有通过处理才能转换成数值。 对于一个数来说,从字符串转换成数字是很简单的,通过Convert.to*()函数可以实现,但是对于形如[12 23 34 45]这种输入方式就比较棘手了,从R语言那边的经验来看,最好的办法是先分割字符串了,那么在C#里面的分割字符串方法是不是也叫做split呢,答案是的,和R的处理是一样的,不过Split这个方法在System.Text这个命名空间里面。因此可以有如下写法: 总体上来看这个输入的方式要比c,c++复杂很多,但是目前我也没有发现什么好的办法,好像支持C#的oj平台本来也很少,后续看看有没有好的刷一下。 C#控制台输入-OJ 标签:题目 怎么 c++ style 实现 暂停 行数据 只读 pre 原文地址:https://www.cnblogs.com/NEFPHYS/p/mcs1.html1 int s = Console.Read();
2 //输入1
3 Console.WriteLine(s);
4 //输出为49
5 //该方法只读取一个字符,并将该字符的unicode编码返回为int类型
1 var s = Console.ReadKey();
2 //按下2键
3 Console.WriteLine(s.GetType().FullName);
4 //输出 System.ConsoleKeyInfo
5 Console.WriteLine(s);
6 //输出 System.ConsoleKeyInfo
7 //该方法只响应一个按键事件
8 /*ReadKey()方法的最常见用途之一是在用户
9 * 按下某个键时暂停程序执行, 然后应用终止
10 * 或显示其他信息窗口。 下面的示例使用
11 * ReadKey()方法在终止应用之前等待用户按 enter 键。*/
string s = Console.ReadLine();
//输入 12 23 34 45
string[] sSplit = s.Split();
int[] sNum = new int[sSplit.Length];
for (int i = 0; i )
{
sNum[i] = Convert.ToInt32(sSplit[i]);
}
for (int i = 0; i )
{
Console.WriteLine(sNum[i] + " " + sNum.GetType().FullName);
}
//输出
//12 System.Int32[]
//23 System.Int32[]
//34 System.Int32[]
//45 System.Int32[]