Как я могу заставить мой C# калькулятор работать так, как задумано? - PullRequest
0 голосов
/ 26 января 2020

У меня есть калькулятор C#, который я пытаюсь запустить, однако я продолжаю сталкиваться с проблемами, особенно с моей последней функцией, и в настоящее время застреваю в бесконечной проверке l oop, как я могу заставить эту работу работать как намеревался взять два числа и на основе пользовательского ввода получить ответ для их уравнения.

{
    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;
        }
    }
}

1 Ответ

1 голос
/ 26 января 2020

Во многих местах у вас был ненужный вызов Console.ReadLine и переопределение переменных. Также вы не использовали свой метод Validation (подумайте о переименовании в 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}");
        }
    }
}
...