Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使我的C#计算器按预期运行_C#_Calculator - Fatal编程技术网

如何使我的C#计算器按预期运行

如何使我的C#计算器按预期运行,c#,calculator,C#,Calculator,我有一个C#计算器,我正在尝试运行,但是我一直遇到问题,特别是我的上一个函数,目前陷入了一个无限的验证循环中,我如何才能使这项工作按预期进行,即取两个数字,并根据用户输入得到它们方程的答案 { class Program { static void Main(string[] args) { Console.WriteLine("Hello User what is your name?"); str

我有一个C#计算器,我正在尝试运行,但是我一直遇到问题,特别是我的上一个函数,目前陷入了一个无限的验证循环中,我如何才能使这项工作按预期进行,即取两个数字,并根据用户输入得到它们方程的答案

{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello User what is your name?");
            string name = Console.ReadLine();
            Console.WriteLine("Hello " + name + " Please enter in a number");
            Console.ReadLine();
            Console.WriteLine("Please enter a Math Operator: +, -, *, / ");
            string beta = IsValidSymbol();
            string equation = Console.ReadLine();
            string useint1 = Console.ReadLine();
            string useint2 = Console.ReadLine();
            Console.WriteLine("Please  enter another number");
            Console.WriteLine(MathSymbols(equation,useint1,useint2));
        }

        public static double Validation()
        {
            string numbString = Console.ReadLine();
            double numbVerify;
            while (!double.TryParse(numbString, out numbVerify))
            {
                Console.WriteLine("please only enter in numbers and do not leave blank");
                numbString = Console.ReadLine();
            }
            return numbVerify;
        }
        private static string IsValidSymbol()
        {
            string mathValidation = Console.ReadLine();
            while ((String.IsNullOrEmpty(mathValidation)))
            {
                Console.WriteLine("Please, do not leave the sentence field empty!");
                Console.WriteLine("Enter a Math Operator: +, -, *, / ");
                mathValidation = Console.ReadLine();
            }
            return mathValidation;
        }
        private static double MathSymbols(string e, string useint1,string useint2)
        {
            useint1 = Console.ReadLine();
            useint2 = Console.ReadLine();
            double result;
            double userinput1;
            double userinput2;
            while (!double.TryParse(useint1, out userinput1))
            {
                Console.WriteLine("please type in a number");
                useint1 = Console.ReadLine();
            }
            while (!double.TryParse(useint2, out userinput2))
            {
                Console.WriteLine("please type in a number");
                useint1 = Console.ReadLine();
            }
            if (e == "+")
            {
                result = userinput1 + userinput2;
            }
            else if (e == "-")
            {
                result = userinput1 - userinput2;
            }
            else if (e == "*")
            {
                result = (userinput1 * userinput2);
            }
            else if (e == "/")
            {
                result = (userinput1 / userinput2);
            }
            result = 0;
            return result;
        }
    }
}


在许多地方,对
控制台.ReadLine
和重写变量进行了不必要的调用。另外,您没有使用方法
验证
(请考虑将其重命名为
GetValidNumber

我更正了您的代码,以便有效输入。您仍然需要在代码中进行额外的验证和重构,祝您好运

using System;

namespace CalculatorExample
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello User what is your name?");
            string name = Console.ReadLine();

            Console.WriteLine("Hello " + name + " Please enter in a number");
            double useint1 = Validation();

            Console.WriteLine("Please enter a Math Operator: +, -, *, / ");
            string equation = IsValidSymbol();
            Console.WriteLine($"You equation symbol: {equation}");

            Console.WriteLine("Please  enter another number");
            double useint2 = Validation();

            double result = MathSymbols(equation, useint1, useint2);
            Console.WriteLine($"Result: {result}");
            Console.ReadKey();
        }

        public static double Validation()
        {
            string numbString = Console.ReadLine();
            double numbVerify;
            while (!double.TryParse(numbString, out numbVerify))
            {
                Console.WriteLine("please only enter in numbers and do not leave blank");
                numbString = Console.ReadLine();
            }
            return numbVerify;
        }
        private static string IsValidSymbol()
        {
            string mathValidation = Console.ReadLine();
            while ((String.IsNullOrEmpty(mathValidation)))
            {
                Console.WriteLine("Please, do not leave the sentence field empty!");
                Console.WriteLine("Enter a Math Operator: +, -, *, / ");
                mathValidation = Console.ReadLine();
            }
            return mathValidation;
        }
        private static double MathSymbols(string equation, double useint1, double useint2)
        {
            if (equation == "+")
               return useint1 + useint2;
            if (equation == "-")
               return useint1 - useint2;
            if (equation == "*")
                return useint1 * useint2;
            if (equation == "/")
                return useint1 / useint2;

            throw new InvalidOperationException($"Unrecognized equation symbol: {equation}");
        }
    }
}

我假设您是编程新手,您的方法
MathSymbols
useint1
useint2
已经定义,因此
Console.ReadLine()
是多余的。这是为了获取用户值,用户值保存在变量的内存中。如果这是你第一次尝试编程,我建议你找一篇解释OOP基本原理的文章,这将是你能为自己做的最好的事情。是的,这是我第一次尝试。谢谢你的建议,我一定会研究的。非常感谢你的帮助,我真的很感激