首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我做错了什么? /noob ?学习编程

我做错了什么? /noob ?学习编程
EN

Stack Overflow用户
提问于 2011-09-29 10:34:55
回答 4查看 188关注 0票数 3

我正尝试在控制台中创建一个简单的个位数计算器(实际上我只关心乘法)。

所以,这是我的代码,如果有人能帮我。

代码语言:javascript
复制
class multiplythisnumber    
{
    static void Main()    
    {
        int input, input1, output; //variable decleration

        System.Console.WriteLine("This application is meant to multiply two single digit numbers.");
        System.Console.WriteLine("You can choose both numbers, however this is only a test.\r I am not sure the read command even does what I think it does.");
        System.Console.WriteLine();

        System.Console.Write("Please enter the first number: ");
        input = System.Console.Read(); //Reads my input + 48(assuming 48 is the value of enter)

        input = input - 48;

        System.Console.WriteLine();

        System.Console.Write("Please enter the second number: ");
        input1 = System.Console.Read(); //Doesn't wasit for input and sets input1 = 13
        System.Console.WriteLine();

        output = input * input1;

        System.Console.WriteLine();
        System.Console.Write("{0} times {1} equals {2}.", input, input1, output);

        System.Console.ReadKey();

    }    
}

我添加了评论来解释我对其他人所做的事情,并只是作为个人笔记。

最后一行总是以"(0)乘以13等于0“结束。-Assuming我使用0作为输入1。

编辑:只是为了澄清一下,我知道0*13=0 (是的,它之前说的是12,它真正说的是13)。问题是它不允许我设置input1,而只是将它设置为13并继续执行。

Edit2:我想对Matt说声谢谢,因为他所做的更改使代码能够正确工作。所以,看起来我有了我的第一个代码,除了告诉你自己的名字之外,实际上还做了一些事情。

EN

回答 4

Stack Overflow用户

发布于 2011-09-29 10:44:43

Console.Read()只读取一个字符。因此,您的第一个Console.Read()读取您的编号,第二个读取CR代码(13),因为您的"Enter“。请改用ReadLine()。

代码语言:javascript
复制
    System.Console.Write("Please enter the first number: ");
    string first = System.Console.ReadLine();

    input = Convert.ToInt32(first);

    System.Console.WriteLine();

    System.Console.Write("Please enter the second number: ");
    string second = System.Console.ReadLine();
    input1 = Convert.ToInt32(second);
    System.Console.WriteLine();

    output = input * input1;

    System.Console.WriteLine();
    System.Console.Write("{0} times {1} equals {2}.", input, input1, output);

    System.Console.ReadKey();
票数 4
EN

Stack Overflow用户

发布于 2011-09-29 10:45:06

它与Read()和ReadLine()的工作方式有关。请尝试使用ReadLine()。

票数 1
EN

Stack Overflow用户

发布于 2011-09-29 10:47:23

我相信这是因为您的程序使用的是Console.Read()而不是Console.ReadLine(),这意味着它一次只能从输入中读取一个字符。你的第一个输入是5+a返回。尝试使用ReadLine,您需要防止输入不是整数的内容。您可以使用以下程序来实现您想要的功能。

代码语言:javascript
复制
class Program
{
    static void Main(string[] args)
    {

        int input, input1; 
        string output; //variable decleration

        System.Console.WriteLine("This application is meant to multiply two single digit numbers.");
        System.Console.WriteLine("You can choose both numbers, however this is only a test.\r I am not sure the read command even does what I think it does.");
        System.Console.WriteLine();

        System.Console.Write("Please enter the first number: ");
        int.TryParse(System.Console.ReadLine(),out input); //Reads my input



        System.Console.WriteLine();

        System.Console.Write("Please enter the second number: ");
        int.TryParse(System.Console.ReadLine(), out input1);
        System.Console.WriteLine();
        if (input != 0 && input1 != 0) {
            input = input - 48;
            output = (input * input1).ToString();
        }else
        {
            output = "NaN";//not a number
        }
        System.Console.WriteLine();
        System.Console.Write("{0} times {1} equals {2}.", input, input1, output);

        System.Console.ReadKey();

    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7591848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档