Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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,对于实践作业,我需要创建一个计算器,它可以: 倍增 分开 加 减去 句柄小数 处理负数,例如(2--3=5) 除了处理负数,我已经做了所有的工作,我真的不知道怎么做这样的事情,我想你也许能帮上忙。以下是我当前的解决代码: public decimal getResult(string equation) { //parse a equation as a string and solve it List<string> numbers = input.Split(op

对于实践作业,我需要创建一个计算器,它可以:

  • 倍增
  • 分开
  • 减去
  • 句柄小数
  • 处理负数,例如(2--3=5)
除了处理负数,我已经做了所有的工作,我真的不知道怎么做这样的事情,我想你也许能帮上忙。以下是我当前的解决代码:

public decimal getResult(string equation)
{
   //parse a equation as a string and solve it
   List<string> numbers = input.Split(opSplit, StringSplitOptions.RemoveEmptyEntries).ToList<string>();
   List<string> operators = input.Split(numSplit, StringSplitOptions.RemoveEmptyEntries).ToList<string>();

   //remove any decimals from operators list
   for (int i = 0; i < operators.Count; i++)
   {
      if (operators[i] == ".")
      {
         operators.RemoveAt(i);
      }
   }

   //set total to first values in numbers then remove in from list
   decimal total = decimal.Parse(numbers[0]);
   numbers.Remove(total.ToString());

   int count = 0;

   foreach(string s in numbers) {
      decimal val = decimal.Parse(s);
      string current_operator = operators[count];
      MessageBox.Show(current_operator);
      switch (current_operator)
      {
         case "+":
            total += val;
         break;
         case "-":
            total -= val;
         break;
         case "x":
            total *= val;
         break;
         case "/":
            total /= val;
         break;
      }

      if (count != operators.Count-1)
      {
         count++;
      }
   }
   return total;
}
public decimal getResult(字符串表达式)
{
//将方程解析为字符串并求解它
List number=input.Split(opSplit,StringSplitOptions.removeMptyEntries.ToList();
List operators=input.Split(numSplit,StringSplitOptions.removeMptyEntries.ToList();
//从运算符列表中删除任何小数
for(int i=0;i
我的方程式是用这种格式输入的

  • 1+2-3*4/5

    • 首先:现在你没有考虑操作顺序,这是一个非常糟糕的想法

      我假设你想这样做:
      -3+-5
      ,对吗

      以下是您可以做出的一些假设:

      • 不要将初始值设置为第一个值
      改为设置
      total=0
      。这样,如果你从
      -5
      开始,你就得到了方程
      0-5
      ,它已经是正确的,初始值也没有问题

      • 简化数学运算
      -3+-5
      0-3-5
      相同。利用这一点:解析运算符并检查是否有两个运算符相互跟随。如果你有这样的想法:简化操作,你就可以开始了

      好的措施是:

      +-------------+
      | op | op | = |
      +-------------+
      | +  | +  | + |
      | +  | -  | - |
      | -  | +  | - |
      | -  | -  | + |
      +-------------+
      

      首先:现在你没有考虑操作顺序,这是一个非常糟糕的想法

      我假设你想这样做:
      -3+-5
      ,对吗

      以下是您可以做出的一些假设:

      • 不要将初始值设置为第一个值
      改为设置
      total=0
      。这样,如果你从
      -5
      开始,你就得到了方程
      0-5
      ,它已经是正确的,初始值也没有问题

      • 简化数学运算
      -3+-5
      0-3-5
      相同。利用这一点:解析运算符并检查是否有两个运算符相互跟随。如果你有这样的想法:简化操作,你就可以开始了

      好的措施是:

      +-------------+
      | op | op | = |
      +-------------+
      | +  | +  | + |
      | +  | -  | - |
      | -  | +  | - |
      | -  | -  | + |
      +-------------+
      

      首先:现在你没有考虑操作顺序,这是一个非常糟糕的想法

      我假设你想这样做:
      -3+-5
      ,对吗

      以下是您可以做出的一些假设:

      • 不要将初始值设置为第一个值
      改为设置
      total=0
      。这样,如果你从
      -5
      开始,你就得到了方程
      0-5
      ,它已经是正确的,初始值也没有问题

      • 简化数学运算
      -3+-5
      0-3-5
      相同。利用这一点:解析运算符并检查是否有两个运算符相互跟随。如果你有这样的想法:简化操作,你就可以开始了

      好的措施是:

      +-------------+
      | op | op | = |
      +-------------+
      | +  | +  | + |
      | +  | -  | - |
      | -  | +  | - |
      | -  | -  | + |
      +-------------+
      

      首先:现在你没有考虑操作顺序,这是一个非常糟糕的想法

      我假设你想这样做:
      -3+-5
      ,对吗

      以下是您可以做出的一些假设:

      • 不要将初始值设置为第一个值
      改为设置
      total=0
      。这样,如果你从
      -5
      开始,你就得到了方程
      0-5
      ,它已经是正确的,初始值也没有问题

      • 简化数学运算
      -3+-5
      0-3-5
      相同。利用这一点:解析运算符并检查是否有两个运算符相互跟随。如果你有这样的想法:简化操作,你就可以开始了

      好的措施是:

      +-------------+
      | op | op | = |
      +-------------+
      | +  | +  | + |
      | +  | -  | - |
      | -  | +  | - |
      | -  | -  | + |
      +-------------+
      


      你能澄清这个问题吗?你需要遵循操作顺序吗?(1+2*3=7或1+2*3=9?)您是否在谈论需要输入负数并将其添加到另一个负数的场景?1+2+-3*4/5?我是否理解您的代码是正确的,因为您不允许使用带小数点的数字?@Duncan,如果您的公式是•1+2-3*4/5的形式,那么为什么要启用“x”?您能否澄清这个问题?您需要遵循操作顺序吗?(1+2*3=7或1+2*3=9?)您是否在谈论需要输入负数并将其添加到另一个负数的场景?1+2+-3*4/5?我是否理解您的代码是正确的,因为您不允许使用带小数点的数字?@Duncan,如果您的公式是•1+2-3*4/5的形式,那么为什么要启用“x”?您能否澄清这个问题?您需要遵循操作顺序吗?(1+2*3=7或1+2*3=9?)