0

先週コンピューター サイエンスを始めたばかりで、Coins というワークシートを受け取りました。このワークシートでは、1 組のコインに 4 セント硬貨、10 セント硬貨、5 セント硬貨、1 セント硬貨がいくつ含まれているかを調べなければなりませんでした。私は多くの問題を抱えており、そのエラーが発生しています。これが私のコードです

package Coins;


public class Coins
{
    private int change;

    // two contructors
    Change()    //default constructor
    {
        change = 94;
    }

    Change( int c )
    {
        change = c;
    }

    // accessor method - change
    public int getChange()
    {
            return Change;
    }



    // mutator method - change
    public void setChange( int anotherChange)
    {
        change = anotherChange;
    }

    public void askUserForChange()
    {
        Scanner keyIn;
        keyIn = new Scanner(System.in);

        System.out.print("Please enter the amount of change: ");
        String input = keyIn.nextLine();

        int nChange = Integer.parseInt (input);

        setChange(nChange);
        // change = nChange

        printChangex();
    }

    // action method - take accessor figure out coins -> output
    // calculating the coins needed for the change
    public void printChangeRange(int start, int end)
    {
        for(int c = start; c <= end; c++
        {
            setChange(c);
            printChangex();
        }

    }
    public void printChangex()
    {

    int c = change;
    int quarter = c / 25;
    System.out.println("quarter = " + quarter);
    int a = c%25;
    int dime = a / 10;
    System.out.println("dime = " + dime);
    int b = a%10;
    int nickel = b / 5;
    System.out.println("nickel = " + nickel);
    int c = b%5;
    int penny = c / 1;
    System.out.println("penny = " + penny);

    }


    // instance variables - replace the example below with your own
    private int x;

    public Coins()
    {
        // initialise instance variables
        x = 0;
    }

    public int sampleMethod(int y)
    {
        // put your code here
        return x + y;
    }
}
4

2 に答える 2

4

という名前のクラスがCoinsあり、それに という名前のコンストラクターを与えようとしていChangeます。クラスとコンストラクターは同じ名前でなければなりません。1つだけ選んでください。

タイトルのエラーについて詳しく説明するために、「無効なメソッド宣言、戻り値の型が必要です」がChange() //default constructor. これはと呼ばれるクラスにあるためCoins、コメントが主張するようにコンストラクターではありません。Java コンパイラは、これをメソッドと見なします。すべてのメソッドには戻り値の型が必要なので、コンパイラは文句を言います。

実際のコンストラクターはコードの最後にあります。コンストラクターを最初に配置するのが標準的な方法であるため、これらの一般的な名前のコンストラクターをCoinsクラスの先頭に配置することをお勧めします。おそらく、Change()コンストラクターを完全に削除する必要があるだけです。

また、ここで質問する際のヒントとして、表示されているエラー メッセージ全体を投稿することが非常に重要です。私の答えは、経験に基づいた推測に基づいており、コード内のすべての問題を解決するわけではありません。プログラムの修正に取り組み続けているので、お気軽に質問をお寄せください。

于 2012-09-12T00:50:46.883 に答える
3

これ

// two contructors
Change()    //default constructor
{
    change = 94;
}

Change( int c )
{
    change = c;
}

は異常です。Coinsファイルの下部にクラスのコンストラクターもあるので、それを使用することをお勧めします。すべての Java クラスには、デフォルトのコンストラクタであっても、クラス自体と同じ名前のコンストラクタがあることに注意してください。

インスタンス化で 94 という魔法の値を持っているのはさらに珍しいことですが、真面目な話、クラス名を選んでそれに固執してください。

これ

// accessor method - change
    public int getChange()
    {
            return Change;
    }

…も変です。代わりにメンバー変数を返したい場合があるchangeので、それを小文字の C に変更します。

于 2012-09-12T00:54:28.683 に答える