定义Account类 属性: private int balance 方法: getter方法 void deposit(int money) //存钱,在余额的基础上加上money void withdraw(int money) //取钱,在余额的基础上减去money 注意:可能有多个线程通过deposit或withdraw方法同时存取Account对象的balance属性。 裁判测试程序: import java.util.Scanner; /*你的代码,即Account类的代码*/ /*系统已有代码,无需关注*/
时间: 2024-01-13 18:02:24 浏览: 122
以下是定义Account类的代码:
```java
public class Account {
private int balance;
public Account(int balance) {
this.balance = balance;
}
public synchronized int getBalance() {
return balance;
}
public synchronized void deposit(int money) {
balance += money;
}
public synchronized void withdraw(int money) {
balance -= money;
}
}
```
注意到在`deposit`和`withdraw`方法中,使用了`synchronized`关键字来保证多个线程同时访问这些方法时,不会导致数据不一致的问题。而在`getBalance`方法中,也使用了`synchronized`关键字,以保证多个线程同时访问该方法时,能够得到正确的余额信息。
以下是测试程序:
```java
public class Test {
public static void main(String[] args) {
Account account = new Account(1000);
Scanner scanner = new Scanner(System.in);
System.out.println("当前余额为:" + account.getBalance());
System.out.print("请输入要存入的金额:");
int depositMoney = scanner.nextInt();
account.deposit(depositMoney);
System.out.println("存入" + depositMoney + "后,当前余额为:" + account.getBalance());
System.out.print("请输入要取出的金额:");
int withdrawMoney = scanner.nextInt();
account.withdraw(withdrawMoney);
System.out.println("取出" + withdrawMoney + "后,当前余额为:" + account.getBalance());
}
}
```
该测试程序先创建了一个初始余额为1000的账户对象`account`,然后从控制台读取用户输入的存款和取款金额,并分别调用`deposit`和`withdraw`方法,最后输出当前余额信息。由于在`Account`类中使用了`synchronized`关键字,故多个线程同时对`account`对象进行存取款时,不会导致数据不一致的问题。
阅读全文