银行系统不希望自己从课堂上重新获得信息,甚至信息正在整理

时间:2018-03-30 11:38:34

标签: java

方法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()会在存款或取款后存储价值,但价值不会改变。

2 个答案:

答案 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());
}