0

wallet.CountMoney(); のパラメーターに何を入れるかを探しています。どちらかといえば...私は値を返すメソッドが値を返さないメソッドと比較してどのように機能するかについて精神的なブロックを持っています...合計を試しました...ダブル合計....ええと、プログラムにステップインして、デバッグ ツールが役に立ちましたが、何も表示されませんでした。

どんなガイダンスも素晴らしいものです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace lab24
{
class Program
{
    static void Main()
    {
        CoinPurse purse = new CoinPurse();

        purse.AddPenny(3);
        purse.AddNickel(4);
        purse.AddDime(2);
        purse.AddQuarter(1);
        purse.CountMoney();
        purse.TakeNickels(4);
        purse.CountMoney();


        Console.ReadLine();
    }
    public class CoinPurse
    {
        private int numPennies;
        private int numNickels;
        private int numDimes;
        private int numQuarters;
        private double total;

        public CoinPurse()
        {
            numPennies = 0;
            numNickels = 0;
            numDimes = 0;
            numQuarters = 0;
            total = 0;
        }
        public void AddPenny(int p)
        {
            numPennies += p;
        }
        public void AddNickel(int n)
        {
            numNickels += n;
        }
        public void AddDime(int d)
        {
            numDimes += d;
        }
        public void AddQuarter(int q)
        {
            numQuarters += q;
        }
        public void TakePenny(int p)
        {
            numPennies -= p;
        }
        public void TakeNickels(int n)
        {
            numNickels -= n;
        }
        public void TakeDime(int d)
        {
            numDimes -= d;
        }
        public void TakeQuarters(int q)
        {
            numQuarters -= q;
        }
        public double CountMoney(double total)
        {
            double q = numQuarters * .25;
            double d = numDimes * .10;
            double n = numNickels * .05;
            double p = numPennies * .01;

            total = q + d + n + p;

            return total;
        }
    }

}
}
4

4 に答える 4

2
var total = 0m;
total = purse.CountMoney(total);

ただし、このコードは少し奇妙に見えます。初期値を考慮せずに計算されて返されるためだけに、doubleを渡すことが期待されます。

個人的に、私は入力パラメータを失うでしょうCountMoney()

 public double CountMoney()
        {
           //Existing Code
        }

そして、あなたがしているようにダブルを返すだけで、それを直接呼び出すことができます。

var total = purse.CountMoney();
于 2012-08-08T05:07:10.813 に答える
2

CountMoneyメソッドを次のように変更します。

public double CountMoney()
{
    double q = numQuarters * .25;
    double d = numDimes * .10;
    double n = numNickels * .05;
    double p = numPennies * .01;

    double total = q + d + n + p;

    return total;
}

Main次に、次のようにメソッドから呼び出すことができます。

static void Main()
{
    CoinPurse purse = new CoinPurse();

    purse.AddPenny(3);
    purse.AddNickel(4);
    purse.AddDime(2);
    purse.AddQuarter(1);
    purse.CountMoney();
    purse.TakeNickels(4);

    double total = purse.CountMoney();

    Console.WriteLine(total);

    Console.ReadLine();
}
于 2012-08-08T05:11:49.357 に答える
0

totalメソッドのパラメータの目的は何CountMoneyですか?教えてください。合計金額を取得するためですか?次にout、次のようにキーワードを指定する必要があり、おそらく戻り値は必要ありません。

#1(キーワードなし)

    public void CountMoney(out double total)
    {
        double q = numQuarters * .25;
        double d = numDimes * .10;
        double n = numNickels * .05;
        double p = numPennies * .01;

        total = q + d + n + p;
    }

メソッドMainは次のようになります。

    static void Main()
    {
        CoinPurse purse = new CoinPurse();

        purse.AddPenny(3);
        purse.AddNickel(4);
        purse.AddDime(2);
        purse.AddQuarter(1);
        purse.CountMoney();
        purse.TakeNickels(4);

        double total;
        purse.CountMoney(out total);
        Console.WriteLine(total);

        Console.ReadLine();
    }

また、戻り値を使用して別の方法で (この場合はより自然に) 行うこともできます。

#2 (戻り値あり)

戻り値を持つメソッドCountMoneyは次のようになります。

    public double CountMoney()
    {
        double q = numQuarters * .25;
        double d = numDimes * .10;
        double n = numNickels * .05;
        double p = numPennies * .01;

        return q + d + n + p;
    }

メソッドMainは次のようになります。

    static void Main()
    {
        CoinPurse purse = new CoinPurse();

        purse.AddPenny(3);
        purse.AddNickel(4);
        purse.AddDime(2);
        purse.AddQuarter(1);
        purse.CountMoney();
        purse.TakeNickels(4);

        Console.WriteLine(purse.CountMoney());

        Console.ReadLine();
    }
于 2012-08-08T05:12:58.913 に答える
0

私はあなたがすべてのタイプの変更を追加しようとしていると思います (私が間違っている場合は修正してください) 財布にお金の合計を入れるために、変数は初期値を超えて処理されず、結果を保持しないため、この場合は機能しません。 . ref キーワードを使用する必要があります (次を参照してください: http://msdn.microsoft.com/en-us/library/14akc2c7%28v=vs.71%29.aspx ) 。常にオブジェクト指向を考えてください)

于 2012-08-08T05:15:13.927 に答える