硬币:无效的方法声明,需要返回类型

时间:2012-09-12 00:47:07

标签: java

我上周刚刚开始使用计算机科学,我们得到了一张名为Coins的工作表,我必须在其中找出一组硬币中有多少个季度,硬币,镍币和便士。我遇到了很多麻烦,并且遇到了这个错误。这是我的代码

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;
    }
}

2 个答案:

答案 0 :(得分:4)

您有一个名为Coins的类,并且正在尝试为其指定一个名为Change的构造函数。类和构造函数必须具有相同的名称。只需选一个。

为了详细说明标题中的错误,我假设“无效方法声明,需要返回类型”是指Change() //default constructor行。由于这是在一个名为Coins的类中,因此它不是评论所声称的构造函数。 Java编译器认为它是一种方法。所有方法都必须具有返回类型,因此编译器会抱怨。

实际的构造函数位于代码的底部。将构造函数放在第一位是标准做法,因此我建议您将这些命名良好的构造函数放在Coins类的开头。您可能只需要完全删除Change()构造函数。

此外,作为在此提问的提示,您发布完整的错误消息至关重要。我的答案是基于一些有根据的猜测,当然不能解决代码中的所有问题。随着您不断尝试修复计划,请随时回答更多问题。

答案 1 :(得分: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。