尝试做一个计算器

-2 c# calculator while-loop

所以基本上每当我尝试更改 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());
            }
        }
    }
}```
Run Code Online (Sandbox Code Playgroud)

Eri*_* J. 5

让我们看看这部分代码:

bool restart = true;
while (restart == true)
{
    // Some stuff omitted...
    bool restart = Convert.ToBoolean(Console.ReadLine());
}
Run Code Online (Sandbox Code Playgroud)

重新声明 restart。相反,您应该像这样分配它(bool在第一次声明变量后使用该变量时不要这样做):

restart = Convert.ToBoolean(Console.ReadLine());
Run Code Online (Sandbox Code Playgroud)