首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

1、用户输入的基础知识

在之前的知识介绍过程中,我们一直在用Console.Writeline()的模板功能,将相关内容输出到屏幕上。

我们之前做的一直是在看程序运行结果,但是我们知道,现实中我们使用的软件程序都是可以和用户互动的,接下来我们看看,在控制台应用程序中,我们怎么和程序进行简单的互动:

程序运行的时候是这样的

此时我们在光标的位置随便输入一些内容后敲回车

我们输入的内容就在第二行输出啦!

嗯,不过这时会出现一个问题,刚刚的代码运行时,我们没有输入的时候,界面上只有一个光标,此时对于用户来说,很可能不知道要干啥所以我们简单修改代码:

这样我们看到,当程序运行的时候,界面上有提示信息,用户就可以依据提示信息来进行操作啦。

现在我们回头看看代码,哦,原来接收用户输入的命令是Console.ReadLine()呀。这回咱们知道啦,当程序跑到Console.ReadLine()的时候,程序会自动等待接收用户的输入。

不过我们仔细的端详一下代码发现,Console.ReadLine()的前面还有一个String str呢,这是声明一个字符串变量的意思。原来我们不仅仅需要用Console.ReadLine()来接收用户的输入,而且当接收到用户的输入后,需要保存在一个变量中。然后我们才能通过使用对应的变量,来操作用户的输入内容。

原来控制台程序和用户互动如此简单。

那么我们简单列举一下Console类中我们常用的方法

Console.Write 表示向控制台直接写入字符串,不进行换行,可继续接着前面的字符写入。

Console.WriteLine 表示向控制台写入字符串后换行。

Console.Read 表示从控制台读取字符串,不换行。

Console.ReadLine 表示从控制台读取字符串后进行换行。

Console.ReadKey 获取用户按下的下一个字符或功能键,按下的键显示在控制台窗口中。

Console.Beep 通过控制台扬声器播放提示音。

Console.Clear 清除控制台缓冲区和相应的控制台窗口的显示信息。

其余暂时没接触过的方法很简单,大家可以简单测试。

2、用户输入随之而来的问题

那么我们知道了如何在控制台应用程序中控制用户输入内容,那么我们接下来就产生一个想法,不如我们现在做个计算器的雏形吧。比如先做个计算加法的功能试试,于是我们的代码是:

这里我们的想法是,先让用户在屏幕上依照提示输入第一个和第二个数字,当用户输入完毕后自动计算并输出到屏幕上。

但是代码敲出来就出问题了,用户输入位置就报错啦。

这思路没错呀,因为不是说C#对数据类型要求比较严格嘛,那既然我们想实现加法,那就暂时用int的变量接收用户的输入不就成啦?

这里先给出答案,因为Console.ReadLine()默认接收到的结果为字符串类型,所以我们是不能用int来接收一个字符串的。

不过从逻辑上来看,Console.ReadLine()也的确应当用字符串类型来接收,因为我们不知道当用户输入的时候,用户究竟要输入什么样的内容,可能用户输入的是数字,也可能输入的是字符。

那既然有硬性规定,那么我们修改一下代码:

这程序倒是可以正常运行了,但是这结果……

其实不难猜到,当我们用字符串来接收用户的输入后,得到的也是字符串,这时的a+b其实就是将用户的两次输入连接在一起输入而已,并没有进行加法运算。(此处有个知识点:我们可以用加号将两个字符串链接!)

这时怎么办呢?因为C#对变量的数据类型要求很严格,所以要处理这样的问题,我们就需要数据类型转换,于是我们修改代码:

看!这回程序正常运行啦。

我们用Convert.ToInt32()来将字符串类型转换成int类型。

嗯……先享受一下成果,试试减法、乘法、除法和取余数。其他的问题明天再说……

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210304A0F48Q00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券