我的程序应该计算旅行的每加仑英里数。
程序运行正常,直到我在循环中尝试退出。当用户在三个输入中的任何一点输入“quit”但它只是进入下一个输入时,它应该退出。即使我在所有三个输入中键入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
答案 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")