【发布时间】:2019-09-18 12:00:29
【问题描述】:
我创建了一个控制台应用程序,它将接受用户输入的任何数字和 + 或 - 运算符,并返回结果。 比如用户可以输入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");
}
}
}
}
【问题讨论】:
-
看起来你只在读取
+时才执行加法。因此,输入的最后一位数字; 3,在您的1+2+3示例中,保留在numberString中,但从未求和。考虑当 i = userInput.Length-1 时的特殊情况,即读取最后一个数字的时间。 -
似乎是一个可以通过调试解决的家庭作业问题。你调试过代码吗?
-
我的建议;将每个数字及其前面的运算符作为一个数字。如果没有运算符,请使用“+”。所以“1+2+3-4”分解为“+1”、“+2”、“+3”、“-4”。把它们加在一起,你就会得到正确的答案。当然,这只适用于加法和减法。
-
感谢您的回复,我想添加条件 input.length - 1 但卡在执行计算的位置。
标签: c#