多个随机输入数字之间的减法

问题描述

我想让用户输入随机数示例:5-3-10-50,系统将拆分“-”然后结果 5 3 10 50 ,如何从第一个数字减去第二个数字等进行减法, 像这样 5 - 3 = 2,2 - 10 = -8,-8 - 50 = -58 然后系统将打印最终答案-58​​p>

我的代码

;?

我知道我的代码错误的,我是初学者,我已经尝试修复这个问题,但直到现在我还无法修复它,我希望有人告诉我我的代码有什么问题并修复它,谢谢。

解决方法

您的不起作用的原因是您设置了 Answer = 0。 而你使用了 foreach。在循环的第一次迭代中,从 Answer 中减去第一个数字,结果为 -5。

使用for (int i=1; i<arr.Length; i++) 而不是 foreach

从索引 1 开始,然后减去这些值。

示例:

var arr = InputNumber.Split('-');
double Answer = 0;
if (double.TryParse(arr[0],out _))
{
    // We set Answer to the first number,since nothing is subtracted yet
    Answer = Convert.ToDouble(arr[0]);
}

// We start index from 1,since subtraction starts from 2nd number on the String array
for (int i=1; i<arr.Length; i++)
{
    if (double.TryParse(arr[i],out _))
    {
        double NumberResult = Convert.ToDouble(arr[i]);
        Answer -= NumberResult;
    }
}

Online C# Compiler 上测试

,

在开始减法之前,您需要在 foreach 循环中使用一个条件来检查第一个解析的双精度值。也不需要调用 Convert.ToDouble(),因为 double.TryParse() 函数已经返回解析的 double 值,您只需要一个变量来包含 outdouble.TryParse() 值函数,见下例

bool Subtraction = true;
int AskSubtraction = 0;

while (Subtraction)
{
    Console.Write("\n" + "input number ( example : 1 - 2 - 3 - 4 ) : ");
    var InputNumber = Console.ReadLine();
    double Answer = 0;
    double numResult;

    foreach (var result in InputNumber.Split('-'))
    {
        if (double.TryParse(result,out numResult))
        {
            if(Math.Abs(Answer)>0){
                Answer -= numResult;
            }
            else{
                Answer=numResult;
            }
        }
        else
        {
            Console.WriteLine("\n" + "Wrong input !");
            AskSubtraction++;
        }
    }

    Console.WriteLine("\n" + "subtraction result : " + Answer);
}