c# - 如何重新设计此代码以避免 goto?
问题描述
好吧,我遇到了这个问题,因为我开始使用 C# 并编写了一个控制台计算器,但我使用goto
了它,但我听说不使用它,但我不知道使用什么其他指令来让它像我一样工作想要它。我把我的代码(它不长)贴在这里,所以也许你可以看看它并给我一些提示。谢谢!
base:
Console.WriteLine("First number");
double first = double.Parse(Console.ReadLine());
Console.WriteLine("Second number");
double second = double.Parse(Console.ReadLine());
Console.WriteLine("What operation do you want to perform? \n1 - addition \n2 - subtraction \n3 - multiplication \n4 - division");
string choice = Console.ReadLine();
if (choice == "1")
{
Console.WriteLine(first + second);
Console.ReadLine();
}
if (choice == "2")
{
Console.WriteLine(first - second);
Console.ReadLine();
}
if (choice == "3")
{
Console.WriteLine(first * second);
Console.ReadLine();
}
else if (choice == "4" && second == 0)
{
Console.WriteLine(" Do not divide by zero");
}
if (choice == "4")
{
Console.WriteLine(first / second);
Console.ReadLine();
}
Console.WriteLine("Next one? \n1 - Yes \n2 - No");
string chc2 = Console.ReadLine();
if (chc2 == "1")
{
goto base;
}
if (chc2 == "2")
{
Console.WriteLine("Bye bye");
Console.ReadKey();
}
解决方案
使用循环。这是一种常见的方式:
while (true) {
// do some stuff
Console.WriteLine("Next one? \n1 - Yes \n2 - No");
string chc2 = Console.ReadLine();
if (chc2 == "1")
{
continue; // means go back to the top of the loop
}
if (chc2 == "2")
{
Console.WriteLine("Bye bye");
Console.ReadKey();
break; // means break out of the loop
}
}
推荐阅读
- android - 通过 intune 将 APK 上传到 Play 商店时出错?
- javascript - 如何设置 chrome selenium 窗口大小以匹配不同机器的尺寸?
- python - 在 Tensorflow 中计算均方对数误差返回 nan
- algorithm - 集群重编程和云重编程有什么区别?
- node.js - Heroku - 无法从 github 安装包
- aws-api-gateway - 与 AWS API 网关和 express stepfunctions 同步 RestAPI
- javascript - 如何使用 Nginx 提供文件文件夹?
- apache-nifi - 寻找 GenerateTableFetch 的等价物
- entity-framework - 通过 DI 创建的对象的构造函数中使用的 DbContext 的异步问题
- geometry - 使用 Chart.js 以相对于数据的固定角度绘制一条线