这是我不理解的最后一部分
到目前为止,VendingMachine类没有任何构造函数。始终构造没有构造函数的类的实例,并将所有实例变量设置为零(如果它们是对象引用,则为null)。提供显式构造函数总是一个好主意。
为VendingMachine类提供两个构造函数:
1)使用10个汽水罐初始化自动售货机的默认构造函数
2)构造函数VendingMachine(int cans),用给定数量的罐初始化自动售货机 两个构造函数都应该将令牌计数初始化为0。
此计划实验室来自:
2.1。在本实验中,您将实现一个装有罐装苏打水的自动售货机。要购买一罐苏打水,客户需要在机器中插入一个令牌。当插入令牌时,罐可从罐储存器落入产品输送槽中。自动售货机可以装满更多的罐头。目标是确定在任何给定时间机器中有多少罐和令牌。
您为VendingMachine课程提供哪些方法?非正式地描述它们。
2.2。现在将这些非正式描述转换为Java方法签名,例如
public void fillUp(int cans)
提供方法的名称,参数和返回类型。不要实现它们。
2.3。这些方法需要做哪些实例变量才能完成工作?提示:您需要跟踪罐头和令牌的数量 用它们的类型和访问修饰符声明它们。
2.4。考虑当用户将令牌插入自动售货机时会发生什么。令牌数量增加,罐头数量减少。实施方法:
public void insertToken()
{
// Instructions for updating the token and can counts
}
您需要使用在上一步中定义的实例变量。 不要担心自动售货机中没有罐头的情况。您将在本课程的后面学习如何编写“如果可以计数> 0”的决策。现在,假设如果自动售货机为空,则不会调用insertToken方法。
2.5。现在实现一个方法`fillUp(int cans) 向机器添加更多罐头。只需添加新罐数就可以计算。
2.6。接下来,实现两个方法getCanCount和getTokenCount,它们返回can和token计数的当前值。 (您可能需要查看BankAccount类的getBalance方法以获得指导。)
2.7。您已经实现了VendingMachine类的所有方法。 将它们组合成一个类,如下所示:
public class VendingMachine
{
private your first instance variable
private your second instance variable
public your first method
public your second method
. . .
}
2.8现在完成以下测试程序,以便它练习您班级的所有方法。
public class VendingMachineTester
{
public static void main(String[] args)
{
VendingMachine machine = new VendingMachine();
machine.fillUp(10); // Fill up with ten cans
machine.insertToken();
machine.insertToken();
System.out.print("Token count: ");
System.out.println(machine.getTokenCount());
System.out.println("Expected: . . .");
System.out.print("Can count: ");
System.out.println(machine.getCanCount());
System.out.println("Expected: . . .");
}
}
答案 0 :(得分:1)
有关构造函数的文档,请参阅此链接:https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html
构造函数只是一个始终是创建对象时调用的第一个方法。因此,变量初始化通常在构造函数中完成。
在你的情况下,它看起来应该是这样的:
public class VendingMachine
{
//replace this with whatever variable name you used for the number of cans
private int numCans;
//the default constructor
public VendingMachine() {
//call the other constructor with the default value, 10
this(10);
}
//the constructor which takes an argument
VendingMachine(int cans) {
//set the number of cans equal to the passed argument
numCans = cans;
}
//insert all other methods and fields you already wrote for this class
}