【发布时间】:2022-01-09 11:45:42
【问题描述】:
所以基本上每当我尝试更改 while 循环内的变量“restart”时,它都会给我一个错误,提示“无法在此范围内声明名为 'restart' 的本地或参数,因为该名称用于封闭的本地定义本地或参数的范围”。如果有人知道如何解决这个问题,请告诉我
public class Program
{
public static void Main()
{
bool restart = true;
while (restart == true)
{
Console.WriteLine("please enter Multiply, Divide, Add Or Subtract");
string Method = Console.ReadLine();
if (Method == "Add")
{
Console.WriteLine("Please Enter First Number");
double numberOne = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Please Enter The Second Number");
double numberTwo = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(numberOne + numberTwo);
Console.WriteLine("Would You Like To Use The Calculator Again? (true = yes, false = no)");
bool restart = Convert.ToBoolean(Console.ReadLine());
}
else if (Method == "Subtract")
{
Console.WriteLine("Please Enter First Number");
double numberOne = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Please Enter The Second Number");
double numberTwo = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(numberOne - numberTwo);
Console.WriteLine("Would You Like To Use The Calculator Again? (true = yes, false = no)");
bool restart = Convert.ToBoolean(Console.ReadLine());
}
else if (Method == "Multiply")
{
Console.WriteLine("Please Enter First Number");
double numberOne = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Please Enter The Second Number");
double numberTwo = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(numberOne * numberTwo);
Console.WriteLine("Would You Like To Use The Calculator Again? (true = yes, false = no)");
bool restart = Convert.ToBoolean(Console.ReadLine());
}
else if (Method == "Divide")
{
Console.WriteLine("Please Enter First Number");
double numberOne = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Please Enter The Second Number");
double numberTwo = Convert.ToDouble(Console.ReadLine());
Console.WriteLine(numberOne / numberTwo);
Console.WriteLine("Would You Like To Use The Calculator Again? (true = yes, false = no)");
bool restart = Convert.ToBoolean(Console.ReadLine());
}
else
{
Console.WriteLine("error found");
Console.WriteLine("Would You Like To Use The Calculator Again? (true = yes, false = no)");
bool restart = Convert.ToBoolean(Console.ReadLine());
}
}
}
}```
【问题讨论】:
-
取出
bool restart = Convert.ToBoolean(Console.ReadLine());中的bool。当该变量在外部范围内声明时,您正试图在范围内声明一个 new 变量。 -
另请注意,您在每个
if块中重复最后两行。你可以把它移到最后一个else之外。 -
@DStanley 谢谢,但它必须在每个 if 块之后我相信感觉 else 只是为了如果你做的事情不是“加、乘、减或除”
-
@Gh0ST:D 斯坦利是对的。您在每个“if”分支中都有相同的代码,因此代码无论如何都会运行。您可以(并且应该)在 else 语句的右大括号之后移动这两行。为了可维护性,避免在应用程序的不同部分重复相同的代码很重要(如果您在一堆地方重复的一行中有错误,则必须找到并修复所有这些地方)。
-
@EricJ。谢谢你,我现在明白他们的意思了
标签: c# while-loop calculator