多个随机输入数之间的减法
Subtraction between multiple random input numbers
我想让用户输入随机数示例:5-3-10-50
, 系统会拆分 "-" 然后结果 5 3 10 50
,如何从第一个数字减去第二个数字等等,
像这样 5 - 3 = 2 , 2 - 10 = -8 , -8 - 50 = -58
然后系统将打印最终答案 -58
我的代码:
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;
foreach (var result in InputNumber.Split('-'))
{
if (double.TryParse(result, out _))
{
double NumberResult = Convert.ToDouble(result);
Answer -= NumberResult;
}
else
{
Console.WriteLine("\n" + "Wrong input !");
AskSubtraction++;
}
}
Console.WriteLine("\n" + "subtraction result : " + Answer);
}
我知道我的代码有问题,我是初学者,我已经尝试修复这个问题,但直到现在我都无法修复它,我希望有人告诉我我的代码有什么问题并修复它,谢谢。
你的不起作用的原因是你设置了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;
}
}
在开始减法之前,foreach 循环中需要一个条件来检查第一个解析的双精度值。也没有必要调用 Convert.ToDouble()
因为 double.TryParse() 函数已经 returns 解析的双精度值,你只需要一个变量来包含 out
的值double.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);
}
我想让用户输入随机数示例:5-3-10-50 , 系统会拆分 "-" 然后结果 5 3 10 50 ,如何从第一个数字减去第二个数字等等, 像这样 5 - 3 = 2 , 2 - 10 = -8 , -8 - 50 = -58 然后系统将打印最终答案 -58
我的代码:
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;
foreach (var result in InputNumber.Split('-'))
{
if (double.TryParse(result, out _))
{
double NumberResult = Convert.ToDouble(result);
Answer -= NumberResult;
}
else
{
Console.WriteLine("\n" + "Wrong input !");
AskSubtraction++;
}
}
Console.WriteLine("\n" + "subtraction result : " + Answer);
}
我知道我的代码有问题,我是初学者,我已经尝试修复这个问题,但直到现在我都无法修复它,我希望有人告诉我我的代码有什么问题并修复它,谢谢。
你的不起作用的原因是你设置了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;
}
}
在开始减法之前,foreach 循环中需要一个条件来检查第一个解析的双精度值。也没有必要调用 Convert.ToDouble()
因为 double.TryParse() 函数已经 returns 解析的双精度值,你只需要一个变量来包含 out
的值double.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);
}