【发布时间】:2021-12-15 11:13:16
【问题描述】:
我知道有很多方法可以解决这个问题,我知道使用 if 语句的“愚蠢”方式,但是我一直在尝试使用更少的代码,但更多地使用它。
if(ope == "+")
{
result = userInput + userInput2;
Console.WriteLine(result);
}
然后为所有操作员复制这个垃圾。
我做了一个包含所有操作员的列表,并认为我可以检查列表,如果输入不等于列表中的任何内容,请重复,直到选择一个操作员。 (这可能会导致错误()如果用户写了超过 1 个正确答案会发生什么,它会从列表中取更多还是第一个。一个例子:如果用户输入 +- /(甚至还没有走到这一步呢? ),它们都在列表中。
以下是我为获取双精度而编写的代码示例: 一个例子是“while (!double.TryParse(Console.ReadLine(), out userInput));”从代码 sn-p 开始,该代码不会接受任何字符串值,并一遍又一遍地重复代码,直到 userInput 是一个数字。
我不知道如何使用 do while 循环来循环代码以检查 userInput 是否与列表包含的值相同:数学运算符 +、-、*、/;^、% 以及用户是否输入不正确,重复代码直到正确为止。
我的问题是,我如何遍历列表,检查输入是否正确,选择正确的输入并求解 userInput X userInput2 上的方程。用户是否应该选择 2 个运算符,例如 / 和 - 重复循环。只选择 1 个操作员。
private static void Main(string[] args)
{
List<string> OperatorToUse = new List<string>();
OperatorToUse.Add("+");
OperatorToUse.Add("-");
OperatorToUse.Add("/");
OperatorToUse.Add("*");
OperatorToUse.Add("%");
OperatorToUse.Add("^");
double userInput;
double userInput2;
var result;
var ope;
do
{
Console.WriteLine("Enter Your first number: ");
} while (!double.TryParse(Console.ReadLine(), out userInput));
#If the answer is X, and user Input is also X. stop the Loop
#Not working
do
{
Console.WriteLine("Enter your Operator: ");
} while (!OperatorToUse.Contains(Console.ReadLine(), out OperatorToUse));
#Not working
do
{
Console.WriteLine("Enter your Operator: ");
} while (Console.Readline(ope) == "+" || ope == "-" || ope == "/");
do
{
Console.WriteLine("Enter Your Second number: ");
} while (!double.TryParse(Console.ReadLine(), out userInput2));
Console.WriteLine($"{result}");
}
【问题讨论】:
-
ReadLine 是否在末尾添加回车?使用 ReadLine().Trim() 将其删除。
-
readLine() 用于从用户那里获取输入,Out 用于将我们的输入传递给变量。不确定trim是什么,没用过那个功能
-
是的,我知道。请阅读您接受的答案。 ReadLine() 返回的内容末尾有一个额外的字符,它是一个回车符。这就是您的代码无法正常工作的原因。如果你在谷歌上搜索修剪是什么,你就会知道。如果您查看 ReadLine() 的 MSDN,它声明它在字符串末尾包含回车符。
标签: c# list loops while-loop calculator