单行计算器-最后一个数字的问题

时间:2019-04-29 20:37:49

标签: c#

我创建了一个控制台应用程序,该应用程序现在将接受任何数字和+或-运算符的用户输入,并返回结果。 例如,用户可以输入1 + 2 + 3 + 4,结果应为10。

我的问题是我无法弄清楚如何得出最后一个要累加到总结果中的数字。

这意味着在我的代码中只计算1 + 2 + 3,而忽略4。

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace SimpleCalculator
{
    public class Program
    {
        public static void Main()
        {
            int result = 0;
            int number;
            string numberString = "";

            Console.WriteLine("Enter numbers followed by operation eg. x+y-z");
            while (true)
            {
                string userInput = UserInput();
                //Loop into each element of the input string
                for (int i = 0; i < userInput.Length; i++)
                {
                    if((IsNumber(userInput[i])))
                    {
                        numberString += userInput[i];
                    }
                    else if (!IsNumber(userInput[i]))
                    {
                        number = Int32.Parse(numberString);
                        numberString = "";
                        result = PerformCalculation(result, number, userInput[i]);
                    }

                }
                number = Int32.Parse(numberString);
                result += number;
                Console.WriteLine($"{userInput}={result}");
            }
        }

        // check if input is number or operator
        static bool IsNumber(char input)
        {
            if (char.IsDigit(input)){return true;}
            else{return false;}
        }

        static string UserInput()
        {
            string User_input = Console.ReadLine();
            return User_input;
        }

        static int PerformCalculation(int sum, int num, char op)
        {
            switch (op)
            {
                case '+': return sum + num;
                case '-': return sum - num;
                default: throw new ArgumentException("Uknown operator");
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您已经弄清楚您没有添加最后一个数字,并且让我们思考一下原因。

仅当您呼叫PerformCalculation时才添加该号码,并且将被呼叫的条件是什么? else if (!IsNumber(userInput[i]))

如果您查看输入内容,您会在字符串末尾看到非数字吗?如果没有,则PerformCalculation不会被呼叫。

您如何解决?返回结果之前,请检查numberString是否为空,如果不为空,则在返回结果之前进行最终计算。

由于这是一个家庭作业问题,我将其余部分留作练习。