方法getchangebalance不能从setchangebalance方法获取值,setchangebalance获取int值并保存到accountbalance变量中,但getchangebalance可以从setchangebalance接收值。
编辑: CheckBalance.java
package atm;
import java.util.Scanner;
public class CheckBalance extends Validation {
Scanner sc = new Scanner(System.in);
public CheckBalance(int i) {
Validation vd = new Validation();
System.out.println("RM" + vd.getchangebalance());
System.out.println("1:menu \n2:Exit");
String temp = sc.next();
if (temp.equals("1")) {
Screen sr = new Screen(i);
}
if (temp.equals("2")) {
System.exit(0);
}
}
}
Validation.java
package atm;
public class Validation {
public int[] account = {1231, 1232, 1233, 1234};
public int[] pin = {1231, 1232, 1233, 1234};
private int accountbalance;
public Validation() {
accountbalance = 0;
}
public void setchangebalance(int accountbalance) {
this.accountbalance = accountbalance;
}
public int getchangebalance() {
System.out.print("cuba setchangebalance" + accountbalance);
return this.accountbalance;
}
public void setbalanceminus(int newminus) {
accountbalance -= newminus;
}
public int getbalanceminus() {
return accountbalance;
}
public void setbalanceadd(int newadd) {
accountbalance += newadd;
}
public int getbalanceadd() {
return accountbalance;
}
}
所以,假设getchangebalance()会在存款或取款后存储价值,但价值不会改变。
答案 0 :(得分:1)
因为CheckBalance
扩展了Validation
,所以您不需要在构造函数内创建此类的实例。所以你的构造函数应该是这样的:
public class CheckBalance extends Validation {
public CheckBalance(int i) {
System.out.println("RM" + getChangeBalance());
...
}
...
}
如果你要在构造函数中创建一个Validation实例,而不是将它分配给任何属性,那么在构造函数完成它的工作之后你将松开它。
其次,您可以更新Validation类,因为您的类实际上使用了4种方法:
public class Validation {
public int[] account = {1231, 1232, 1233, 1234};
public int[] pin = {1231, 1232, 1233, 1234};
private int accountBalance; // because this is a primitive type, default value is 0
public int getAccountBalance () { // get current balance value
System.out.print("cuba setChangeBalance" + accountBalance);
return accountBalance;
}
public void setAccountBalance(int value) { // set balance
this.accountBalance= value;
}
public void minus(int value) { // remove from balance
accountBalance-= value;
}
public void add(int value) { // add to balance
accountBalance+= value;
}
}
答案 1 :(得分:0)
我得到的印象是,您不完全了解get / set方法的工作原理,或者您使用的Screen类没有按预期工作。
我建议您在Validation类中添加一个简单的main方法,以便首先测试和理解该类的行为。
下面是一个这样一个主要方法的例子(基于Beri给出的验证版本,但是打印移出了get方法)
public static void main(String[] args) {
Validation validation = new Validation();
System.out.println("Balance: " + validation.getAccountBalance());
validation.setAccountBalance(100);
System.out.println("Balance: " + validation.getAccountBalance());
validation.minus(25);
System.out.println("Balance: " + validation.getAccountBalance());
validation.add(10);
System.out.println("Balance: " + validation.getAccountBalance());
}