程序不退出

本文关键字:退出 程序 | 更新日期: 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这样才有意义