2017-01-31 6 views
0
class Myclass 
{ 
    public string Driver1() 
    { 
     string a = ""; 

     Console.Write("Please enter drivers name: "); 
     a = Console.ReadLine(); 

     return a; 
    } 
    public int numberOfTrips() 
    { 
     int a = 0; 
     { 
      Console.Write("Enter the number of trips: "); 
      a = Convert.ToInt32(Console.ReadLine()); 
     } 
     return a; 
    } 
    public List<float> Payments() 
    { 
     List<float> a = new List<float>(); 
     float input; 

     for (int i = 0; i<numberOfTrips(); i++) 
     { 
      Console.Write("Enter payment {0}: ", (1 + i)); 
      input = float.Parse(Console.ReadLine()); 
      Console.WriteLine("Payment added"); 
      a.Add(input); 
     } 

     return a; 
    } 
} 
class Program 
{ 
    static void Main(string[] args) 
    { 
     Myclass a = new Myclass(); 

     string name = a.Driver1(); 
     int trip = a.numberOfTrips(); 
     float total = a.Payments().Sum(); 

     Console.WriteLine("\nDriver: {0}\n" + "Number of trips: {1}\n" + "Total payment: {2}\n", name, trip, total); 
    } 
} 

私が午前問題は、それがforループ含む方法に到達する前に、「公共のint numberOfTripsは()」メソッドを二回実行されていることです。私はこれが、ループを止めるべきときを指定するためにforループ内で使用しているという事実と関係していると思います。私はこれを間違って行ったと推測しています。どうすればこの問題を修正できますか?私は、ユーザーが何回支払いを要求するかを設定できるようにする必要があります。方法は二回を介して実行されている

何か助けていただければ幸いです。

答えて

0

だけPaymentsへのパラメータとしてnumberOfTripsから番号を渡します、私はこれを試してみましたが、それが働いている

Myclass a = new Myclass(); 

string name = a.Driver1(); 
int trip = a.numberOfTrips(); 
float total = a.Payments(trip).Sum(); 
+0

私は:)ありがとう:あなたのMain方法で

public List<float> Payments(int tripCount) { List<float> a = new List<float>(); float input; for (int i = 0; i < tripCount; i++) { Console.Write("Enter payment {0}: ", (1 + i)); input = float.Parse(Console.ReadLine()); Console.WriteLine("Payment added"); a.Add(input); } return a; } 

を非常に新しいこのC#は、数日間しか学習していないので、(int tripcount)とnumberOfTripsがtripcountにどのように渡すかを教えてください。また、なぜ私はここで使用する必要がありますか:float total = a.Payments(trip).Sum(); –

+0

@CharlieWalkden最初に 'numberOfTrips'を呼び出して変数' trip'に格納してから変数を取得しています。次に、変数を 'Payments'へのパラメータとして渡します。これは基本的に、そのメソッドがその変数にアクセスできるようにして、それを使用できるようにします。 (詳細な説明については、メソッドとパラメータのチュートリアルを参照してください) – Abion47

+0

ありがとう、本当にありがとう:) –

0

Main()とPayments()でnumberOfTrips()を呼び出す代わりに、MyClassにインスタンス変数または静的変数を作成してみてください。次に、すべての支払いが計算された後、その変数からの旅行の数を取得できます。

0

これは間違いありません。最初に実行されるのは、 '旅行'変数を設定するためのMainです。 2回目の実行は、forループ宣言内のPaymentsにあります。