简体   繁体   中英

Code is working unexpectedly in c# using visual studio code

I am a beginner in c# and I want to create a simple calculator. I have written all the code and it is not showing any errors, however, it is not showing it correctly. This is all the code I am using:

using System;
namespace C_
{
    class Program
    {
        static void Main(string[] args)
        {
           Console.Title = "Calculator"; 

            float num1;
            float num2;
            float resultSum;
            float resultSub;
            float resultProd;
            float resultDiv;


            Console.Write("Enter your first number ");
             
            num1 = Convert.ToInt32(Console.Read());
            num2 = Convert.ToInt32(Console.Read());

            resultSum = num1 + num2;
            Console.Write("The sum is " + resultSum);

            resultSub = num1 - num2;
            Console.Write("The differnce is " + resultSub);

            resultProd = num1 * num2;
            Console.Write("The product is " + resultProd);

            resultDiv = num1 / num2;
            Console.Write("The quotient is " + resultDiv);


            Console.ReadKey();
        }
            
    }
}

When I run this without debugging, the console shows this:

这是我在没有调试的情况下运行代码时显示的内容

https://docs.microsoft.com/en-us/dotnet/api/system.console.writeline?view=netcore-3.1

If you replace Console.Write... with Console.WriteLine... , it will add line breaks to the ends of your print statements, so your output should look like:

The sum is 63
The difference is 37 
...

Your code uses the consolekey values, not the numeric value that you entered. The consolekey for 2 is 50. The consolekey for return is 13.

Not sure if I would use float for the type. Especially since you are converting to int32 . I have put some different techniques into your program. Since you are just learning these are good things to know. I have provided explanations in the comments of the code.

    static void Main(string[] args)
    {
        Console.Title = "Calculator";

        // No need to put the type multiple times
        // Just use a comma to separate the names
        int num1, num2, resultSum, resultSub, resultProd, resultDiv;


        Console.WriteLine("Enter your first number:");

        // This is just a label
        Num1Entry:
        try
        {
            num1 = Convert.ToInt32(Console.ReadLine());
        }
        // This exception is for when you don't get a number from the user. i.e. num1 = a
        catch (FormatException)
        {
            Console.WriteLine("Not a number. Please enter a valid number.");
            // This will jump your program back to the beginning of the try-catch so you can enter a valid number for num1
            goto Num1Entry;
        }
        // This exception is for when the number is out of range for the data type. i.e. num1 = 2147483648 is too big for an int data type.
        catch (OverflowException)
        {
            Console.WriteLine("Invalid number. Please enter a valid number.");
            // This will jump your program back to the beginning of the try-catch so you can enter a valid number for num1
            goto Num1Entry;
        }


        Console.WriteLine("Enter your second number:");

        // This is just a label
        Num2Entry:
        try
        {
            num2 = Convert.ToInt32(Console.ReadLine());
        }
        // This exception is for when you don't get a number from the user. i.e. num2 = a
        catch (FormatException)
        {
            Console.WriteLine("Not a number. Please enter a valid number.");
            // This will jump your program back to the beginning of the try-catch so you can enter a valid number for num2
            goto Num2Entry;
        }
        // This exception is for when the number is out of range for the data type. i.e. num2 = 2147483648 is too big for an int data type.
        catch (OverflowException)
        {
            Console.WriteLine("Invalid number. Please enter a valid number.");
            // This will jump your program back to the beginning of the try-catch so you can enter a valid number for num2
            goto Num2Entry;
        }

        resultSum = num1 + num2;
        Console.WriteLine("The sum is " + resultSum);

        resultSub = num1 - num2;
        Console.WriteLine("The differnce is " + resultSub);

        resultProd = num1 * num2;
        Console.WriteLine("The product is " + resultProd);

        // if num2 = 0 you will get an exception.
        // Use a try-catch to keep your program from failing.
        try
        {
            resultDiv = num1 / num2;
            Console.WriteLine("The quotient is " + resultDiv);
        }
        catch (DivideByZeroException)
        {
            Console.WriteLine("You cannot divide by 0");
        }


        
        Console.ReadKey();
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM