加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#程序不评估操作并返回错误的答案

发布时间:2020-12-16 01:53:02 所属栏目:百科 来源:网络整理
导读:社区. 我正在学习如何用C#编程.我写了这个小程序,它从用户那里获取名称,年龄,喜欢的颜色和两个数字.我使用记事本编写代码并从Windows命令提示符运行C#编译器.这是该程序的源代码 using System;class ShowSomething{static void Main(string[] args){ string
社区.

我正在学习如何用C#编程.我写了这个小程序,它从用户那里获取名称,年龄,喜欢的颜色和两个数字.我使用记事本编写代码并从Windows命令提示符运行C#编译器.这是该程序的源代码

using System;

class ShowSomething
{
static void Main(string[] args)

{
    string name,age,favColor;
    int num1,num2,sum,mult,subs;
    float div;


    Console.Write("What is your name? ");
    name = Console.ReadLine();
    Console.WriteLine("Hello," + name);

    Console.WriteLine();

    Console.Write("How old are you? ");
    age = Console.ReadLine();
    Console.WriteLine("So you are " + age,"I thought that you were older!");

    Console.WriteLine();

    Console.Write("What is your favorite Color? ");
    favColor = Console.ReadLine();
    Console.WriteLine(favColor + " is a cool color!");

    Console.WriteLine();

    Console.WriteLine("Nice meeting you," + name,"Have a good day!");

    Console.WriteLine();

    Console.WriteLine("Let us do some operations," + name);

    Console.WriteLine();

    Console.Write("Please enter a number: ");
    num1 = Console.Read();

    Console.Write("Please enter another number: ");
    num2 = Console.Read();

    sum = num1 + num2;
    mult = num1 * num2;
    subs = num1 - num2;
    div = num1 / num2;


    Console.WriteLine();

    Console.WriteLine("Alright,"Let us blow up your mind!");

    Console.WriteLine();

    Console.WriteLine(num1 + "+" + num2,"=" + sum);
    Console.WriteLine(num1 + "*" + num2,"=" + mult);
    Console.WriteLine(num1 + "-" + num2,"=" + subs);
    Console.WriteLine(num1 + "/" + num2,"=" + div);

    Console.WriteLine();
    Console.WriteLine("Mindblown,Right?");
}   

}

当我执行程序时几乎一切都顺利.但是,当用户输入第一个操作数时,程序跳过第二个提示并打印出与预期结果完全不同的结果.例如,如果我将0作为第一个数字,程序将跳转到操作并打印以下内容:

//

48 13

48 * 13

48-13

48/13

精打细算,对吧?

//

解决方法

不要使用 Console.Read,因为它没有达到预期的效果:

Reads the next character from the standard input stream (and returns the integer value1 that represents it).

这是一个很好的解释,从devshort为什么第二次调用Console.Read“跳过”:

If you enter in the value “1” for the first thing,it’ll convert that to the ascii representation. Then the carriage return is STILL in the screen [input] buffer,so when you hit the next read (Console.Read) it reads the newline and converts it to a number.

相反,一种方法是使用Console.ReadLine而不是(返回一个字符串)与int.Parse或类似的一起使用..

1提示:carriage return字符的值为13.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读