【C#学习笔记】【7】我想从键盘输入变量的值,这样程序就更灵活了(输入输出
我们在之前的文章中,对于变量的赋值(初始化)都是直接写在程序中的,那如果想从键盘输入,怎么做呢?我来介绍一个用于从键盘获取输入值的方法。
Console.ReadLine()方法看到这个标题,是不是想起了什么?对,我们之前用的输出函数Console.WriteLine()方法。今天我们再介绍一下输入函数。
猜猜怎么用?好吧,我介绍一下用法:
string s; s=Console.ReadLine(); Console.WriteLine(s);
从上面的例子中我们可以看出,Console.ReadLine()会从键盘读取一个数,并且把结果赋值给s。是不是用法很简单呢?让我们思考一个问题。
编写一个程序,从键盘输入两个整数,并且输出他们的和。
哇,你写出来了么?是不是写了类似的语句 int a=Console.ReadLine();执行时报错了,错误列表告诉我们:无法将类型string隐式转换为int。这是神马意思呢?
通过查资料(MSDN帮助文件的使用后文会讲解)我们发现,Console.ReadLine()的结果是字符串类型,即string。而我们需要的是一个int整数,那我们怎么将string转换成我们需要的类型呢?下面我们介绍转换方法。
变量的类型转换在这里,我们介绍两种常用的转换方式,一种是利用Convert转换,一种是强制转换(不是任何地方都可以强制转换)。当然我会告你刚才的错误中所说的隐式转换是什么东西。
Convert类型转换我先给出上面思考题的解决方法。
string s1=Console.ReadLine(); int a1=Converrt.ToInt32(s); string s2=Console.ReadLine(); int a2=Converrt.ToInt32(s); int sum=a1+a2; Console.WriteLine(sum);
从上面的例子中可以看出,我用的Convert.ToInt32()这样的语句进行转换为int整数的,括号里的是待转换的变量,这个变量其实可以不只是string类型,可以是任意类型(可能会出错,后面讲)。这样的转换是不是也是很简单,那你猜猜转换为double类型怎么做呢?不知道你猜到没有,那就是Convert.ToDouble()方法。还有一个常用的方法就是Convert.ToBoolean();这个会将“true”或者“false”的字符串转换为bool类型的变量。我们需要知道的就这三个。
你可能会有疑问,为什么不介绍转换为string类型的方法呢。第一个是我们输入的直接就是string类型,而且任意类型都会自动(隐式)转换为string类型。而且你可以明确的用方法转换为string类型,那就是Convert.ToString();
刚才我说了,转换过程中可能会出错,你能想到是什么样的错误么?
例如我从键盘输入了一个这样的字符串“asdfbh23sdf562dfs”,你能将他转换为整数int类型吗?貌似说不通,也做不到,除非你自己写一个转换方法(后面咱们可以尝试一下)。还有一种情况,我输入的是数字,例如“123654132154561324564132”,这个要是转换成int会出什么样的错误呢?前文我提到,每种变量类型是有范围的,不是任意的值都可以,当然,这个字符串的范围显然超出了int类型的范围,那当然会出错喽。至于这两种问题(用户导致的错误,而不是我们写程序的)怎么解决,我们以后在异常那里会详细说。
强制转换其实我不喜欢这种方式,会经常出错,而且试用范围小。方法就是在待转换变量前加一个括号,括号里写目标类型,如下:
double a=6.568; int b=(int)a; Console.WriteLine(b); //结果是6,显然精度丢失了,我们有时候用这个方法取整数。前文提到过。
这个方法就简单提一下。下面介绍一下显式转换和隐式转换。
显式转换与隐式转换用我的理解来定义这两种转换的话,我们明确指出的并且采用以上两种方法的转换就是显式转换。而程序自己默认转换的就是隐式转换。其实,我们前面已经用了很多的隐式转换,例如,两个整数相除时我们总是乘以0.1来让结果变成double型。还有我们常用的输出方法,Console.WriteLine(),其实括号中只接受string类型,而我们操作时经常把任意类型放进去,其实程序在这里自己做了隐式转换。那么,什么时候可以进行隐式转换呢?
也就是说,小类型转换为大类型。如int可以隐式转换为double,反过来却不能,为什么呢?很好理解,小容器内的水总能全部倒入到大容器而不出错,反过来,可能会把水溢出来。(我在之前也说过,把类型理解为装指定范围值的容器)这样也解释了,任何变量类型总能转换为string字符串。因为string可以存放任意长度的任意东西。
隐式转换顺序如下:
char >> int >> double >> string;
bool >> string
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/69564.html