虽然循环没有退出

时间:2016-10-04 04:29:38

标签: c#

我的程序应该计算旅行的每加仑英里数。

程序运行正常,直到我在循环中尝试退出。当用户在三个输入中的任何一点输入“quit”但它只是进入下一个输入时,它应该退出。即使我在所有三个输入中键入quit,它也只是崩溃了。

我尝试过的事情:

  • 在所有三个输入中键入退出
  • 仅使用1个条件进行循环,或者使用3个
  • 放入strBeginningOdometerReading.ToUpper()!= 1-10000000
  • 更改所有||到&&
  • 将QUIT更改为字符串变量
using System;

namespace MPG
{
    class Program
    {
        static void Main()
        {
            //Declare the variables
            string strBeginningOdometerReading, strEndingOdometerReading, strNumberOfGallons;
            double dblBeginningOdometerReading, dblEndingOdometerReading, dblNumberOfGallons, dblMilesPerGallon, dblMilesTravelled;

            //Priming prompt & read
            Console.Write("Enter the beginning odometer reading: ");
            strBeginningOdometerReading = Console.ReadLine();
            Console.Write("Enter the ending odometer reading: ");
            strEndingOdometerReading = Console.ReadLine();
            Console.Write("Enter the number of gallons purchased for six fill-ups during the trip.");
            strNumberOfGallons = Console.ReadLine();

            //Convert
            dblBeginningOdometerReading = Convert.ToDouble(strBeginningOdometerReading);
            dblEndingOdometerReading = Convert.ToDouble(strEndingOdometerReading);
            dblNumberOfGallons = Convert.ToDouble(strNumberOfGallons);

            //Calculations
            dblMilesTravelled = dblEndingOdometerReading - dblBeginningOdometerReading;
            dblMilesPerGallon = dblMilesTravelled / dblNumberOfGallons;

            //Display
            Console.WriteLine("Miles Travelled: \t\t\t {0:n2} miles", dblMilesTravelled);
            Console.WriteLine("Number of Gallons Purchased for 6 fill-ups: {0:n2} gallons", dblNumberOfGallons);
            Console.WriteLine("Miles per Gallon (MPG): \t\t\t {0:n2} mpg", dblMilesPerGallon);

            //While loop
            while (strBeginningOdometerReading.ToUpper() != "QUIT" || strEndingOdometerReading.ToUpper() != "QUIT" || strNumberOfGallons.ToUpper() != "QUIT")
            {

                Console.WriteLine("Enter QUIT at any time to exit.");
                Console.Write("Enter the beginning odometer reading: ");
                strBeginningOdometerReading = Console.ReadLine();
                Console.Write("Enter the ending odometer reading: ");
                strEndingOdometerReading = Console.ReadLine();
                Console.Write("Enter the number of gallons purchased for six fill-ups during the trip: ");
                strNumberOfGallons = Console.ReadLine();

                //Convert
                dblBeginningOdometerReading = Convert.ToDouble(strBeginningOdometerReading);
                dblEndingOdometerReading = Convert.ToDouble(strEndingOdometerReading);
                dblNumberOfGallons = Convert.ToDouble(strNumberOfGallons);

                //Calculations
                dblMilesTravelled = dblEndingOdometerReading - dblBeginningOdometerReading;
                dblMilesPerGallon = dblMilesTravelled / dblNumberOfGallons;

                //Display
                Console.WriteLine("Miles Travelled: \t\t\t {0:n2} miles", dblMilesTravelled);
                Console.WriteLine("Number of Gallons Purchased for 6 fill-ups: {0:n2} gallons", dblNumberOfGallons);
                Console.WriteLine("Miles per Gallon (MPG): \t\t\t {0:n2} mpg", dblMilesPerGallon);
            } // end while
        } //end Main
    } //end class
} //end namespace

2 个答案:

答案 0 :(得分:1)

strBeginningOdometerReading = Console.ReadLine();在while循环中,所以期望while中的其余代码被执行,直到下一个循环。

您可以在if(strBeginningOdometerReading.ToUpper() =="QUIT") break;之后立即添加strBeginningOdometerReading = Console.ReadLine();以打破while循环并停止执行其余代码。

然后改为while(true),你就可以了。

答案 1 :(得分:0)

你的状况应该是AND

(strBeginningOdometerReading.ToUpper() != "QUIT" && strEndingOdometerReading.ToUpper() != "QUIT" && strNumberOfGallons.ToUpper() != "QUIT")