2012-03-29 8 views
0

私は、タンク一杯のガスに使用されたマイルとガロン(整数)を入力するはずのC#アプリケーションを開発しており、アプリケーションは得られた1ガロンあたりのマイルを計算して表示する必要がありますすべてのタンクフォースについて得られた1ガロン当たりのマイル数を表示します。私の問題は、センチネル制御のアスペクト "-1"がプログラムの実行を止めないが、IDEがJITデバッガを起動し、Microsoft.NETフレームワーク例外MileageDriven.exe [732]が発生することです。Visual Studio C#2010第4版からの演習

私は最後のレッスンで作成された今後のレッスンとして、この練習を超えて移動したくないので、少し助けてもらえますか?前もって感謝します。

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

私はコードを投稿しようとしていますが、サイコロはありません。私はこのサイトを勉強しています。私と一緒に裸でください。 –

答えて

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"); 
    } 
関連する問題