2012-03-29 8 views
0

저는 가스 탱크에 대해 사용 된 마일과 갤런 (정수)을 입력해야하는 C# 응용 프로그램을 작성한 후 응용 프로그램에서 얻은 갤런 당 마일을 계산하고 표시해야합니다 각 tankfuls에 대해 얻은 갤런 당 총 마일을 표시합니다. 내 문제는 감시 컨트롤 측면 "-1"이 실행되는 것을 막지는 못했지만 IDE가 JIT 디버거를 시작하고 Microsoft.NET 프레임 워크 예외 MileageDriven.exe [732]를 얻는 것입니다.Visual Studio C# 2010 네 번째 에디션의 연습

지난 강의에서 나올 미래 수업으로이 실습을 넘어서고 싶지 않으므로 도움이 될 수 있습니까? 미리 감사드립니다.

Console.WriteLine("\nTotal of the {0} miles driven is {1} per tank is{}", mileageCounter, total); 

문제는 추가 {}입니다 : :) 당신이 게시

using System; 

public class MileagedrivenTest 
{ 
    public static void Main(string[] args) 
    { 
     Mileage driverMileage = new Mileage("Driver log"); 

     driverMileage.DisplayMessage(); 
     driverMileage.DetermineMileagePerGallon(); 
    } // end main 
} // end class MileageDrivenTest 

// Fig. 1.1: MileageDriven.cs 
// Mileage class that solves mileage per gallon problem 
// using sentinel-controlled repetition 
using System; 

public class Mileage 
{ 
    public string Gallons { get; set; } 

    public Mileage (string name) 
    { 
     Gallons = name; 
    } 

    public void DisplayMessage() 
    { 
     Console.WriteLine("Welcome to the mileage log for\n{0}\n", Gallons); 
    } // end method DisplayMessage 

    //determine the average mileage for gallon per tank of gas 
    public void DetermineMileagePerGallon() 
    { 
     int total = 0; 
     int mileage; // sum of miles driven 
     int gallons; // sum gallons used 
     double average; 

     int mileageCounter = 0; 

     Console.WriteLine("Enter mileage or -1 to quit: "); 
     mileage = Convert.ToInt32(Console.ReadLine()); 
     Console.WriteLine("Enter gallons used: "); 
     gallons = Convert.ToInt32(Console.ReadLine()); 

     while (mileage != -1) 
     { 
     mileage = total + mileage; 
     mileageCounter = mileageCounter + mileage; 

     Console.Write("Enter next miles driven or -1 to quit: "); 
     mileage = Convert.ToInt32(Console.ReadLine());   
     } // end while 

     if (mileageCounter != 0) 
     { 
     average = (double)total/mileageCounter; 

     Console.WriteLine("\nTotal of the {0} miles driven is {1} per tank is{}", mileageCounter, total); 
     Console.WriteLine("Average mile per gallon is {0}", average); 
     } 
     else 
     Console.WriteLine("No mileage entered");  
    } 
} 
+0

우리가 코드 또는 예외 중 하나를 보지 않고 할 수있는 방법을 알고 어렵습니다 .. –

+0

사실, 필자가 작성한 두 코드를 게시 할 것입니다. 고맙습니다. 잠시만 요. –

+0

임, 코드는 게시하지 않으려 고합니다. Im 다만이 위치를 배우기. 나랑 벗었 어. –

답변

0

코드는이 라인에 예외가 발생합니다. 코드를 제거하면 코드가 실행되지만 해결하려고하는 문제가 해결되지 않는다고 생각합니다. 나는 문제의 나의 해석을 기반으로 DetermineMileagePerGallon()를 수정 한 - 희망은 가까이 솔루션을 얻을 것이다 :

//determine the average mileage for gallon per tank of gas 
    public void DetermineMileagePerGallon() 
    { 
     int totalTankfuls = 0; 
     int inputMileage; 
     int totalMileage = 0; // sum of miles driven 
     int totalGallons = 0; // sum gallons used 

     Console.WriteLine("Enter mileage or -1 to quit: "); 
     while (!Int32.TryParse(Console.ReadLine(), out inputMileage)) ; 

     while (inputMileage != -1) 
     { 
      totalTankfuls++; 

      if (inputMileage > 0) 
       totalMileage += inputMileage; 

      Console.WriteLine("Enter gallons used: "); 
      int inputGallons; 
      while (!Int32.TryParse(Console.ReadLine(), out inputGallons)) ; 

      if (inputGallons > 0) 
       totalGallons += inputGallons; 

      Console.WriteLine("Enter mileage or -1 to quit: "); 
      while (!Int32.TryParse(Console.ReadLine(), out inputMileage)) ; 

     } // end while 

     if (totalTankfuls > 0) 
     { 
      double averageMpg = (double)totalMileage/totalGallons; 

      double averageMileagePerTankful = (double)totalMileage/totalTankfuls; 
      Console.WriteLine("Total of {0} miles driven on {1} tanks of fuel; average is {2} miles per tankful", totalMileage, totalTankfuls, averageMileagePerTankful); 
      Console.WriteLine("Average mile per gallon across all tankfuls is {0}", averageMpg); 
     } 
     else 
      Console.WriteLine("No mileage entered"); 
    }