You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#开发计算器时修改while循环内restart变量出现作用域报错如何解决

错误原因

你在Main方法外层已经声明了名为restart的布尔变量,C#语法不允许在嵌套的局部作用域(也就是你写的if/else代码块)中再次声明同名的局部变量。你在每个分支里写bool restart = Convert.ToBoolean(Console.ReadLine());属于重复声明同名变量,不是修改外层已有的restart值,因此触发报错。

修复方法

把所有if/else分支里restart赋值语句前的bool类型声明去掉即可,直接修改外层已经声明的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)");
                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)");
                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)");
                restart = Convert.ToBoolean(Console.ReadLine());
            }
            else
            {
                Console.WriteLine("error found");
                Console.WriteLine("Would You Like To Use The Calculator Again? (true = yes, false = no)");
                restart = Convert.ToBoolean(Console.ReadLine());
            }
        }
    }
}
可选优化

你可以把询问是否重启的逻辑从每个分支里抽出来,放在while循环末尾,不用每个分支都写一遍重复代码,减少冗余。

内容的提问来源于stack exchange,提问作者Ethan O

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:15:10