0

我上周刚开始学习计算机科学,我们得到了一个名为 Coins 的工作表,我必须在其中找出一组硬币中有多少 25 美分硬币、5 美分硬币和几美分硬币。我遇到了很多麻烦,并且遇到了那个错误。这是我的代码

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. 类和构造函数必须具有相同的名称。随便挑一个。

为了详细说明标题中的错误,我假设“无效的方法声明,需要返回类型”是指带有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 回答