[小雨学编程之C#] 17 人机互动与数据类型转换

原标题:[小雨学编程之C#]17人机互动与数据类型转换

[小雨学编程之C#] 17 人机互动与数据类型转换
文章图片
1、用户输入的基础知识
在之前的知识介绍过程中 , 我们一直在用Console.Writeline()的模板功能 , 将相关内容输出到屏幕上 。
我们之前做的一直是在看程序运行结果 , 但是我们知道 , 现实中我们使用的软件程序都是可以和用户互动的 , 接下来我们看看 , 在控制台应用程序中 , 我们怎么和程序进行简单的互动:
程序运行的时候是这样的

[小雨学编程之C#] 17 人机互动与数据类型转换
文章图片
此时我们在光标的位置随便输入一些内容后敲回车

[小雨学编程之C#] 17 人机互动与数据类型转换
文章图片
我们输入的内容就在第二行输出啦!
嗯 , 不过这时会出现一个问题 , 刚刚的代码运行时 , 我们没有输入的时候 , 界面上只有一个光标 , 此时对于用户来说 , 很可能不知道要干啥所以我们简单修改代码:

[小雨学编程之C#] 17 人机互动与数据类型转换
文章图片
这样我们看到 , 当程序运行的时候 , 界面上有提示信息 , 用户就可以依据提示信息来进行操作啦 。
现在我们回头看看代码 , 哦 , 原来接收用户输入的命令是Console.ReadLine()呀 。 这回咱们知道啦 , 当程序跑到Console.ReadLine()的时候 , 程序会自动等待接收用户的输入 。
不过我们仔细的端详一下代码发现 , Console.ReadLine()的前面还有一个Stringstr呢 , 这是声明一个字符串变量的意思 。 原来我们不仅仅需要用Console.ReadLine()来接收用户的输入 , 而且当接收到用户的输入后 , 需要保存在一个变量中 。 然后我们才能通过使用对应的变量 , 来操作用户的输入内容 。
原来控制台程序和用户互动如此简单 。
那么我们简单列举一下Console类中我们常用的方法
[小雨学编程之C#] 17 人机互动与数据类型转换】Console.Write表示向控制台直接写入字符串 , 不进行换行 , 可继续接着前面的字符写入 。
Console.WriteLine表示向控制台写入字符串后换行 。
Console.Read表示从控制台读取字符串 , 不换行 。
Console.ReadLine表示从控制台读取字符串后进行换行 。
Console.ReadKey获取用户按下的下一个字符或功能键 , 按下的键显示在控制台窗口中 。
Console.Beep通过控制台扬声器播放提示音 。
Console.Clear清除控制台缓冲区和相应的控制台窗口的显示信息 。
其余暂时没接触过的方法很简单 , 大家可以简单测试 。
2、用户输入随之而来的问题
那么我们知道了如何在控制台应用程序中控制用户输入内容 , 那么我们接下来就产生一个想法 , 不如我们现在做个计算器的雏形吧 。 比如先做个计算加法的功能试试 , 于是我们的代码是:

[小雨学编程之C#] 17 人机互动与数据类型转换
文章图片
这里我们的想法是 , 先让用户在屏幕上依照提示输入第一个和第二个数字 , 当用户输入完毕后自动计算并输出到屏幕上 。
但是代码敲出来就出问题了 , 用户输入位置就报错啦 。
这思路没错呀 , 因为不是说C#对数据类型要求比较严格嘛 , 那既然我们想实现加法 , 那就暂时用int的变量接收用户的输入不就成啦?
这里先给出答案 , 因为Console.ReadLine()默认接收到的结果为字符串类型 , 所以我们是不能用int来接收一个字符串的 。
不过从逻辑上来看 , Console.ReadLine()也的确应当用字符串类型来接收 , 因为我们不知道当用户输入的时候 , 用户究竟要输入什么样的内容 , 可能用户输入的是数字 , 也可能输入的是字符 。
那既然有硬性规定 , 那么我们修改一下代码:

[小雨学编程之C#] 17 人机互动与数据类型转换
文章图片
这程序倒是可以正常运行了 , 但是这结果……
其实不难猜到 , 当我们用字符串来接收用户的输入后 , 得到的也是字符串 , 这时的a+b其实就是将用户的两次输入连接在一起输入而已 , 并没有进行加法运算 。 (此处有个知识点:我们可以用加号将两个字符串链接!)
这时怎么办呢?因为C#对变量的数据类型要求很严格 , 所以要处理这样的问题 , 我们就需要数据类型转换 , 于是我们修改代码:

[小雨学编程之C#] 17 人机互动与数据类型转换
文章图片
看!这回程序正常运行啦 。