0

「クラス Money のコンストラクター Money は指定された型に適用できません。必須: 引数がありません。int、int が見つかりました。理由: 実際の引数リストと正式な引数リストの長さが異なります」というエラーが表示され続けます。

また、ここに私が採点するプログラムの目的のリストがあります。後で実行する可能性のあるコードの他のエラーに気付いた場合は、遠慮なく指摘してください。

BlueJ を使用して、ドルとセントの 2 つの整数インスタンス変数を持つ Money クラスを作成します。次のメソッドを提供します。

  1. インスタンス変数を初期化する 2 パラメーターのコンストラクター。コンストラクターは、セントの値が 0 から 99 の間であることを確認し、そうでない場合は、セントの一部をドル変数に転送して、0 から 99 の間にする必要があります。
  2. ドルを 0 に、セントを 1 に初期化する既定のコンストラクター。2 つのパラメーターのコンストラクターを呼び出す必要があります。
  3. ドルの値を 0 に設定しながらセントの値を初期化する 1 パラメーター コンストラクター。そして99。
  4. ドルとセントのアクセサ
  5. 標準の toString メソッド
  6. 2 つの Money オブジェクトが同じ状態であるかどうかを比較する標準の equals メソッド。
  7. Money オブジェクトをパラメーターとして受け取る plus メソッド。plus() メソッドが呼び出されているオブジェクトとパラメーターの合計を表す新しい Money オブジェクトを作成して返します。2 つの既存のオブジェクトの値は変更されません。

最後に、複数の Money オブジェクトを作成する MoneyDemo クラスを作成します。このデモ クラスは、実装したすべてのコンストラクターとメソッドをテストする必要があります。

これが私のコードです:

public class Money
 {
     private int dollars, cents;
     private static final int CENTS_PER_DOLLAR = 100;

     public void checkMoney(int dollars, int cents)
     {
         while (cents<0) 
         {
             cents += 100;
             dollars--;
         }
         while (cents>99) 
         {
             cents -= 100;
             dollars++;
         }
     }

     public Money()
     {
         this.cents = 1;
         this.dollars = 0;
     }

     public void initializeCents(int cents)
     {
         while (cents<0) 
         {
             cents += 100;
             dollars--;
         }
         while (cents>99) 
         {
             cents -= 100;
             dollars++;
         }
     }

     public int getDollars()
     {
         return dollars;
     }

     public int getCents()
     {
         return cents;
     }

     public String toString()
     {
         String str;
         dollars = dollars + cents / CENTS_PER_DOLLAR;
         cents = cents % CENTS_PER_DOLLAR;
         str = "Your total amount is: " + "$" + dollars + "." + cents +"";
         return str;
     }

     public Money plus(Money y) 
     {
         return new Money(y.dollars, y.cents);
     }
 }

public class MoneyDemo 
 {
     public static void main(String[] args) 
     {

         int dollars = 5;
         int cents = 80;
         Money x = new Money( dollars, cents);
         x.checkMoney();

         dollars = 7;
         cents = 70;
         Money y = new Money( dollars, cents);
         y.checkMoney();

         USMoney z = x.plus(y);

         System.out.println( "x: $" + x.dollars + "." + x.cents + "c");
         System.out.println( "y: $" + y.dollars + "." + y.cents + "c");
         System.out.println( "x.plus(y): $" + z.dollars + "." + z.cents + "c");
     }
 }
4

2 に答える 2

2

あなたが呼んでいます

Money x = new Money( dollars, cents);2 つの引数を持つ

そして、あなたはそれを次のように定義しました

public Money()  // no argument constructor
{
     this.cents = 1;
     this.dollars = 0;
}

したがって、次のようにします。

public Money() // no argument constructor
{
     this.cents = 1;
     this.dollars = 0;
}
public Money(int dollars,int cents) // parametrized constructor
{
     this.cents = dollars;
     this.dollars = cents;
}

パラメーターなしのコンストラクターと 2 つの引数を持つパラメーター化されたコンストラクターの両方で機能するように

更新:plusメソッド用`

public Money plus(Money y) 
{
    Money m = new Money();
    int totalCents = y.cents + this.cents;
    int totalDollars = y.dollars + this.dollars;
    if(totalCents > 100)
    {
       totalDollars = totalDollars + (int)(totalCents / 100);
       totalCents = (int)(totalCents % 100);
    }

    m.dollars = totalDollars;
    m.cents = totalCents;

    return m;
}
于 2013-02-06T09:17:48.327 に答える
0

表示されるエラーは、渡そうとするパラメーター (2 つの整数) を受け取るコンストラクターがないことを意味します。あなたが持っている唯一のコンストラクターは、パラメーターを取らない:

public Money()

読み取る新しいコンストラクターを作成する必要があります

public Money (int cents, int dollars) 

    //make sure that cents is between 0 and 99, if not transfer some cents to dollars

割り当ての # 3 を満たすには、3 番目のコンストラクターが必要です。

public Money (int cents) 
    initialize cents based on the parameter passed into it
    set dollars = 0

equals() メソッドもオーバーライドする必要があります。

これは宿題なので、それぞれのやり方については説明しません。

でも、何かお話しできることがあれば教えてください。または、もっと詳しく説明してください。

于 2013-02-06T09:20:14.857 に答える