2016-10-04 100 views
0

我的程序应该计算每加仑行程里程。虽然循环没有退出

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

事情我已经尝试:

  • 所有输入三个输入
  • 退出仅使用1条件的循环,而不是三个
  • 把strBeginningOdometerReading.ToUpper()= 1-10000000
  • 更改所有的||到& &
  • 更改退出到一个字符串变量
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

感谢所有帮助每个人! – Ryker

回答

0

你而条件应该和

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

strBeginningOdometerReading = Console.ReadLine();是while循环里面,所以我们期待代码的其余部分直到下一个循环才执行。

你也许可以在strBeginningOdometerReading = Console.ReadLine();之后加上if(strBeginningOdometerReading.ToUpper() =="QUIT") break;来跳出while循环并停止执行其余的代码。

并改为while(true),你会没事的。