c# - 程序没有退出

时间:2014-06-25 13:14:34

标签: c# exit

刚开始使用C#,这可能只是一个简单的修复,但我似乎无法看到它。一旦程序第一次执行(在添加两个数字之后),则提示用户输入是或否作为退出条件。当我输入' 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;
                }

            }



        }
    }
}

非常感谢任何帮助!

5 个答案:

答案 0 :(得分:10)

将前2行更改为以下内容:

bool again = true;
while (again)

答案 1 :(得分:3)

更改

while (!again)

while (again)

当用户输入no时,again设置为false;所以在while循环中再次被否定,这导致while循环的继续。

顺便说一句,你需要改变

bool again = false;

bool again = true;

答案 2 :(得分:3)

您可以使用While实现所需,并根据不同网民的建议进行细微更改,但您甚至可以使用do while而不是第一次进入循环然后将进行循环每次都检查一下情况: -

正如MSDN所说: -

  

do语句执行语句或语句块   反复进行,直到指定的表达式求值为false。身体   循环必须括在括号{}中,除非它由a组成   单一陈述。在这种情况下,大括号是可选的。

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);

答案 3 :(得分:2)

你可以写

again = (Console.ReadLine() == "no" ? true : false);

但是你选择的变量命名真的很模糊,更好的名字可能是

bool stopLoop = false;
while (!stopLoop)
{
    .....
    stopLoop = (Console.ReadLine() == "no" ? true : false);
}

正如下面的评论中所指出的,您不应该尝试转换为用户输入的整数,而无需更好地检查错误。在非数字值上使用Convert.ToInt32会引发异常。一个更好的代码可能是

  int result;
  if(!Int32.TryParse(Console.ReadLine(), out result))
  {
       Console.WriteLine("Please enter a valid number");
       continue;
  }

答案 4 :(得分:0)

意外编程能力激活!

if(Console.ReadLine() == "no")
    again = true;
else
    again = false;

您也可能想要将变量的名称更改为stop_flag之类的内容,以便它有意义。