class Program { static void Main(string[] args) { //下面这个程序在输入1 2 之后得出的结果为81是怎么回事? int num1; int num2; Console.WriteLine("请用户输入两个数:"); num1=Console.Read(); num2 = Console.Read(); int sum = num1 + num2; Console.WriteLine("两个数的和为:{0}", sum); Console.ReadKey(); //Console.Read(),Console.ReadKey(),Console.ReadLine()之间的区别? // Console.Read(),用于获得用户输入的任何值包括字母、数字、符号等; //Console.ReadKey(),用于获取某个键值,返回一个键值,获取到任何键值都会结束该方法。 //Console.ReadLine(),用于获取一行字符(凡是输入都会转化为字符串),返回的是字符串值,当检测到按下回车键,方法执行结束 } }
这个程序输入 1空格2 之后怎么会得到81?求解释?
还有怎么改成求和程序
可以先跟踪两次read后得到的num1和num2分别是什么,然后再来分析问题的原因。
num1=49, num2=32,所以结果是81。
你的写法有很多问题,第一个改动应该是这样的
Console.WriteLine("请用户输入第一个数:");
num1 =Console.Read();
Console.ReadLine();
Console.WriteLine("请用户输入第二个数:");
num2 = Console.Read();
int sum = num1 + num2;
这种情况下,num1=49, num2=50。
如果你的经验比较丰富一些的话,可能会很容易看出,这是字符1和字符2的ASCII码值。
所以你如果希望他变成数字,还需要一些其他的技巧。
要完成数字的加法,则需要使用如下代码:
string num1; string num2; Console.WriteLine("请用户输入第一个数:"); num1 = Console.ReadLine(); Console.WriteLine("请用户输入第二个数:"); num2 = Console.ReadLine(); int sum =int.Parse(num1) + int.Parse(num2); Console.WriteLine("两个数的和为:{0}", sum); Console.ReadKey();
+1
输入的是字符,需要将输入的内容转换为整型,然后再求和
还是用 ReadLine 吧, Read 只读下一个字符,
在您的示例中,您共输入三个字符:
第一个:1,
第二个:空格,
第三个:2
由于你连用二次 Read,
所以很到的是第一个与第二个字符的 ASCII 码,即49,32。
如果继续使用 Read 处理,是不能处理 10 等两位以上的数字。
改下这里就可以了。
Console.WriteLine("请用户输入两个数:");
num1 = Convert.ToInt32(Console.ReadLine());
num2 = Convert.ToInt32(Console.ReadLine());
这个方法输入11 23 也是不正确的
//必须输入11
23
//才可以
@fanhongshuo:
Console.Read() 是读下一个字符呀, 你的“11 23” 这是五个字符啊。
如果想用 空格 分隔,可以用
string[] inputs = Console.ReadLine().Split(new char[] { ' ' });
num1 = Convert.ToInt32(inputs[0]);
num2 = Convert.ToInt32(inputs[1]);
刚上面有说是 ASCII 码,这个说错了,应该是 Unicode 值。