首页 新闻 会员 周边

Console.Read();两个数求和问题求解释?

0
悬赏园豆:5 [待解决问题]
 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?求解释?

还有怎么改成求和程序

fanhongshuo的主页 fanhongshuo | 初学一级 | 园豆:189
提问于:2014-10-09 22:53
< >
分享
所有回答(4)
0

可以先跟踪两次read后得到的num1和num2分别是什么,然后再来分析问题的原因。

519740105 | 园豆:5810 (大侠五级) | 2014-10-10 08:22
0

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();
爱编程的大叔 | 园豆:30839 (高人七级) | 2014-10-10 10:06

+1

支持(0) 反对(0) jerry128 | 园豆:31 (初学一级) | 2014-10-11 18:47
0

输入的是字符,需要将输入的内容转换为整型,然后再求和

wolfy | 园豆:2636 (老鸟四级) | 2014-10-10 10:19
0

还是用 ReadLine 吧, Read 只读下一个字符,

在您的示例中,您共输入三个字符:
第一个:1,
第二个:空格,
第三个:2
由于你连用二次 Read,
所以很到的是第一个与第二个字符的 ASCII 码,即49,32。
如果继续使用 Read 处理,是不能处理 10 等两位以上的数字。

改下这里就可以了。
Console.WriteLine("请用户输入两个数:");
num1 = Convert.ToInt32(Console.ReadLine());
num2 = Convert.ToInt32(Console.ReadLine());

老闫 | 园豆:204 (菜鸟二级) | 2014-10-10 15:58

这个方法输入11 23 也是不正确的

支持(0) 反对(0) fanhongshuo | 园豆:189 (初学一级) | 2014-10-10 22:11

//必须输入11
23
//才可以

支持(0) 反对(0) fanhongshuo | 园豆:189 (初学一级) | 2014-10-10 22:12

@fanhongshuo: 

Console.Read() 是读下一个字符呀, 你的“11 23” 这是五个字符啊。

如果想用 空格 分隔,可以用

string[] inputs = Console.ReadLine().Split(new char[] { ' ' });

num1 = Convert.ToInt32(inputs[0]);
num2 = Convert.ToInt32(inputs[1]);

 

刚上面有说是 ASCII 码,这个说错了,应该是 Unicode 值。

支持(0) 反对(0) 老闫 | 园豆:204 (菜鸟二级) | 2014-10-10 22:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册