getter、setter 和循环
getters, setters, and loops
我有这个程序,我一直在研究 class,它可以抛硬币并计算落在 heads/tails 上的数量。我终于让它正常工作了,但是我需要实现 get 和 set。我有 3 个硬币,一个镍币,一个 25 美分硬币,一个 1 角硬币。我必须使用 get set 来给它们赋值,并创建一个循环来重复抛三枚硬币。每次它落在头上时,它都会将特定硬币的价值添加到池中(总计),并且当它变得等于或大于一美元时,循环应该结束。这是我的硬币 class,它继承了另一个 class 的方法(所有这些都有效)。问题是,一旦我获得这些值并将其设置为我的私有整数,我如何在我创建的 while 循环中自由使用它们,以便我也可以将它们加总? (我为不完整的循环道歉,我只是变得非常迷茫)提前感谢您的帮助!
好的,感谢大家的帮助,我已经摆脱了所有的错误!现在的问题是,当我 运行 代码时,循环一直在继续(至少看起来是这样,因为它甚至没有在循环后打印 print 语句)我做错了什么?我的一部分想知道它是否没有正确继承 flip 方法,但它是从已经在另一个程序中使用它的 class 继承它并且工作正常。
public class Coin extends GenericCoin {
private int Dime;
private int Nickel;
private int Quarter;
public Coin() {
// TODO Auto-generated constructor stub
}
public int getDime() {
return Dime;
}
public void setDime(int dime) {
this.Dime = 10;
}
public int getNickel() {
return Nickel;
}
public void setNickel(int nickel) {
Nickel = 5;
}
public int getQuarter() {
return Quarter;
}
public void setQuarter(int quarter) {
Quarter = 25;
}
public static void main(String[] args) {
int total = 0;
Coin dime = new Coin();
Coin nickel = new Coin();
Coin quarter = new Coin();
int d = dime.getDime();
int n = nickel.getNickel();
int q = quarter.getQuarter();
while(total < 100) {//loop that will flip the 3 coins and add to total
dime.flip();
if(dime.headFlip1()) {
total = total + d;
}
nickel.flip();
if(nickel.headFlip2()) {
total = total + n;
}
quarter.flip();
if(quarter.headFlip3()){
total = total + q;
}
}
System.out.println(total + ".00");
}
}
首先,您应该对每个硬币调用 setter 方法,这将初始化它们。默认情况下,class 的实例变量的值为 0(对于整数)。或者更好的是,如果您对对象进行硬编码,则使用构造函数直接初始化对象。
其次,total++ Dime
是一个错误的语法。 total++
本身就是一个完整的句子,应该以分号结尾,例如。总计 ++;
您想将 Dime 的特定值添加到总数中。那你应该做
total = total + CoinObject.getDime(); or
total += CoinObject.getDime();
total++
只是将 total 变量的值加一,
例如如果 total = 0
,则执行 total++ 将其设置为 1。
您还没有调用 Setter 方法。除非您调用它们,否则 Dime
、Nickel
和 Quarter
的值将保持未初始化状态,因此您不会真正添加您想要的值。因此,请考虑在开始循环之前调用它们。
其次,setter函数用于设置传递给它的值。例如,当你将quarter
传递给setQuarter()
时,通常的做法是用变量quarter
中的值来初始化成员变量Quarter
。实际上,您的 setter 函数将是这样的:
public void setQuarter(int quarter) {
Quarter = quarter;
}
并且从您的 main()
函数调用此方法将是
quarter.setQuarter(25);
此外,我假设您有 headFlip1()
、headFlip2()
和 headFlip3()
的定义,尽管它们没有出现在代码段中。
我有这个程序,我一直在研究 class,它可以抛硬币并计算落在 heads/tails 上的数量。我终于让它正常工作了,但是我需要实现 get 和 set。我有 3 个硬币,一个镍币,一个 25 美分硬币,一个 1 角硬币。我必须使用 get set 来给它们赋值,并创建一个循环来重复抛三枚硬币。每次它落在头上时,它都会将特定硬币的价值添加到池中(总计),并且当它变得等于或大于一美元时,循环应该结束。这是我的硬币 class,它继承了另一个 class 的方法(所有这些都有效)。问题是,一旦我获得这些值并将其设置为我的私有整数,我如何在我创建的 while 循环中自由使用它们,以便我也可以将它们加总? (我为不完整的循环道歉,我只是变得非常迷茫)提前感谢您的帮助!
好的,感谢大家的帮助,我已经摆脱了所有的错误!现在的问题是,当我 运行 代码时,循环一直在继续(至少看起来是这样,因为它甚至没有在循环后打印 print 语句)我做错了什么?我的一部分想知道它是否没有正确继承 flip 方法,但它是从已经在另一个程序中使用它的 class 继承它并且工作正常。
public class Coin extends GenericCoin {
private int Dime;
private int Nickel;
private int Quarter;
public Coin() {
// TODO Auto-generated constructor stub
}
public int getDime() {
return Dime;
}
public void setDime(int dime) {
this.Dime = 10;
}
public int getNickel() {
return Nickel;
}
public void setNickel(int nickel) {
Nickel = 5;
}
public int getQuarter() {
return Quarter;
}
public void setQuarter(int quarter) {
Quarter = 25;
}
public static void main(String[] args) {
int total = 0;
Coin dime = new Coin();
Coin nickel = new Coin();
Coin quarter = new Coin();
int d = dime.getDime();
int n = nickel.getNickel();
int q = quarter.getQuarter();
while(total < 100) {//loop that will flip the 3 coins and add to total
dime.flip();
if(dime.headFlip1()) {
total = total + d;
}
nickel.flip();
if(nickel.headFlip2()) {
total = total + n;
}
quarter.flip();
if(quarter.headFlip3()){
total = total + q;
}
}
System.out.println(total + ".00");
}
}
首先,您应该对每个硬币调用 setter 方法,这将初始化它们。默认情况下,class 的实例变量的值为 0(对于整数)。或者更好的是,如果您对对象进行硬编码,则使用构造函数直接初始化对象。
其次,total++ Dime
是一个错误的语法。 total++
本身就是一个完整的句子,应该以分号结尾,例如。总计 ++;
您想将 Dime 的特定值添加到总数中。那你应该做
total = total + CoinObject.getDime(); or
total += CoinObject.getDime();
total++
只是将 total 变量的值加一,
例如如果 total = 0
,则执行 total++ 将其设置为 1。
您还没有调用 Setter 方法。除非您调用它们,否则 Dime
、Nickel
和 Quarter
的值将保持未初始化状态,因此您不会真正添加您想要的值。因此,请考虑在开始循环之前调用它们。
其次,setter函数用于设置传递给它的值。例如,当你将quarter
传递给setQuarter()
时,通常的做法是用变量quarter
中的值来初始化成员变量Quarter
。实际上,您的 setter 函数将是这样的:
public void setQuarter(int quarter) {
Quarter = quarter;
}
并且从您的 main()
函数调用此方法将是
quarter.setQuarter(25);
此外,我假设您有 headFlip1()
、headFlip2()
和 headFlip3()
的定义,尽管它们没有出现在代码段中。