我做了一个foreach循环,它会接受用户的输入,并在同一行中减去两个数字,我希望它能打印出任意两个数字之间的差异,但它没有。相反,当我运行代码并输入数字时,它打印出了一个对我来说没有意义的不同答案。我对c#有点陌生,所以我只是在尝试一些东西,但是如果有人知道我的代码出了什么问题,请帮助我找出它的错误所在。谢谢!
using System;
public class Program
{
string sequence;
double answer;
public void Main()
{
Console.WriteLine("<<SUBTRACTION CODE>>");
Console.WriteLine("");
Console.WriteLine("Enter a sequence of numbers and an operator to get subtracted answer ");
Console.WriteLine("Eg: 10-5");
sequence = Console.ReadLine();
foreach (var operation in sequence.Split('-'))
{
answer -= double.Parse(operation);
}
Console.WriteLine(answer);
Console.ReadLine();
}
}发布于 2022-07-28 12:41:53
假设你想要5个而不是-15?
您需要用第一个数字初始化答案的值,而不是从零开始减去所有内容。
bool init;
string sequence;
double answer;
public void Main()
{
Console.WriteLine("<<SUBTRACTION CODE>>");
Console.WriteLine("");
Console.WriteLine("Enter a sequence of numbers and an operator to get subtracted answer ");
Console.WriteLine("Eg: 10-5");
sequence = Console.ReadLine();
foreach (var operation in sequence.Split('-'))
{
if (!init) {
answer = double.Parse(operation);
init = true;
}
else
answer -= double.Parse(operation);
}
Console.WriteLine(answer);
Console.ReadLine();
} 发布于 2022-07-28 12:41:44
您的answer最初将是0。所以当你做answer -=的时候,你从零减去右边的站点(例如5),这会导致一个负面的结果。我想您需要将第一个操作分配给您的answer
using System;
public class Program
{
string sequence;
double answer;
public void Main()
{
Console.WriteLine("<<SUBTRACTION CODE>>");
Console.WriteLine("");
Console.WriteLine("Enter a sequence of numbers and an operator to get subtracted answer ");
Console.WriteLine("Eg: 10-5");
sequence = Console.ReadLine();
var parts = sequence.Split('-');
answer = parts[0];
for(int i = 1; i < parts.Length; i++)
{
answer -= double.Parse(parts[i]);
}
Console.WriteLine(answer);
Console.ReadLine();
}
}当然,您应该检查parts中是否至少有两个元素。
https://stackoverflow.com/questions/73153046
复制相似问题