我上周刚刚开始使用计算机科学,我们得到了一张名为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;
}
}
答案 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。