2016-10-04 5 views
0

Моя программа должна рассчитать мили за галлон для поездки.Пока цикл не прекращается

Программа работает нормально, пока я не попытаюсь выйти, когда я буду внутри цикла. Он должен выйти, когда пользователь вводит в «quit» в любой точке трех входов, но он просто переходит к следующему входу. Даже когда я набираю quit во всех трех входах, он просто падает.

Что я пробовал:

  • Typing бросить курить во всех трех входов
  • Используя только 1 условие цикла вместо или три
  • Ввод 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 
+0

СПАСИБО ДЛЯ ВСЕХ ПОМОЩИ КАЖДЫЙ! – Ryker

ответ

0

Ваше состояние в то время как должно быть и

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

strBeginningOdometerReading = Console.ReadLine(); находится внутри цикла в то время, так что ожидайте остальные коды в время, которое должно быть выполнено до следующего цикла.

Вы можете добавить if(strBeginningOdometerReading.ToUpper() =="QUIT") break; сразу после strBeginningOdometerReading = Console.ReadLine();, чтобы выйти из цикла while и прекратить выполнение остальных кодов.

И измените на while(true) и у вас все будет в порядке.

Смежные вопросы