程序不退出
本文关键字:退出 程序 | 更新日期: 2023-09-27 18:10:10
刚刚开始使用c#,这可能只是一个简单的修复,但我似乎看不到它。一旦程序第一次执行(在两个数字相加之后),就会提示用户输入yes或no作为退出条件。当我输入"no"时,程序将再次循环。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BasicCalculator
{
class Program
{
static void Main(string[] args)
{
bool again = false;
while (!again)
{
Console.WriteLine("C# Basic Calcuator");
Console.WriteLine("Please enter two numbers to be added: ");
Console.WriteLine("Number 1: ");
int result;
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Number 2: ");
int b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Result: ");
result = a + b;
//print result
Console.WriteLine(result);
//potential exit condition
Console.WriteLine("Would you like to calculate again?");
if(Console.ReadLine() == "no")
{
again = false;
}
else
{
again = true;
}
}
}
}
}
任何帮助都非常感谢!
将前两行改为:
bool again = true;
while (again)
change
while (!again)
while (again)
当用户输入no时,again
设置为false;因此在while
循环中再次被取反,这导致while循环的继续。
bool again = false;
bool again = true;
你可以通过使用While
来实现你想要的,根据这里不同的人的建议进行微小的更改,但是你甚至可以使用do while
来代替while,它将第一次进入循环,然后每次都会检查条件:-
如MSDN所示:-
do语句执行一个语句或一个语句块重复,直到指定表达式的计算结果为false。身体的循环必须用大括号{}括起来,除非它包含单独的声明。在这种情况下,括号是可选的。
bool again = false;
do {
Console.WriteLine("C# Basic Calcuator");
Console.WriteLine("Please enter two numbers to be added: ");
Console.WriteLine("Number 1: ");
int result;
int a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Number 2: ");
int b = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Result: ");
result = a + b;
//print result
Console.WriteLine(result);
//potential exit condition
Console.WriteLine("Would you like to calculate again?");
if(Console.ReadLine() == "no")
{
again = false;
}
else
{
again = true;
}
} while (again);
你可以写
again = (Console.ReadLine() == "no" ? true : false);
但是你选择的变量命名真的很模糊,一个更好的名字可能是
bool stopLoop = false;
while (!stopLoop)
{
.....
stopLoop = (Console.ReadLine() == "no" ? true : false);
}
在下面的注释中指出,在没有更好地检查错误之前,不应该尝试将用户键入的内容转换为整数。使用转换。非数值上的ToInt32抛出异常。更好的代码可能是
int result;
if(!Int32.TryParse(Console.ReadLine(), out result))
{
Console.WriteLine("Please enter a valid number");
continue;
}
意外编程能力激活!
if(Console.ReadLine() == "no")
again = true;
else
again = false;
你可能还想把变量名改成stop_flag
这样才有意义