📜  门| GATE-IT-2004 |第 83 题(1)

📅  最后修改于: 2023-12-03 14:58:32.607000             🧑  作者: Mango

门 | GATE-IT-2004 | 第83题

这是GATE-IT-2004考试中的一个编程题,题号为83。以下是对该题的介绍和解析。

题目描述

给定一个银行账户的类Account,要求实现以下方法:

public void withdraw(double amount) throws InsufficientFundsException;
public void deposit(double amount);
public double getBalance();

其中withdraw方法用于从账户中提取指定金额的钱,但如果账户余额不足,就会抛出InsufficientFundsException异常。deposit方法用于向账户存款。getBalance方法用于获取账户的当前余额。

你需要根据提供的类定义实现这些方法,并编写测试用例以验证其正确性。

解析

要解决这个问题,我们需要创建一个Account类,并实现所需要的方法。具体的解题思路如下:

  1. 创建一个私有的balance变量,用于存储账户余额。
  2. 实现deposit方法,将传入的金额加到balance中。
  3. 实现withdraw方法,首先检查账户余额是否足够,如果足够则将提取的金额从balance中减去,否则抛出InsufficientFundsException异常。
  4. 实现getBalance方法,返回当前账户余额。

以下是Java代码的示例实现:

public class Account {
    private double balance;

    public void deposit(double amount) {
        balance += amount;
    }

    public void withdraw(double amount) throws InsufficientFundsException {
        if (balance >= amount) {
            balance -= amount;
        } else {
            throw new InsufficientFundsException("Insufficient funds");
        }
    }

    public double getBalance() {
        return balance;
    }
}

为了验证代码的正确性,我们可以编写一些测试用例:

public class AccountTest {
    @Test
    public void testDeposit() {
        Account account = new Account();
        account.deposit(100);
        assertEquals(100, account.getBalance(), 0.01);
    }

    @Test
    public void testWithdrawSufficientFunds() throws InsufficientFundsException {
        Account account = new Account();
        account.deposit(100);
        account.withdraw(50);
        assertEquals(50, account.getBalance(), 0.01);
    }

    @Test(expected = InsufficientFundsException.class)
    public void testWithdrawInsufficientFunds() throws InsufficientFundsException {
        Account account = new Account();
        account.deposit(100);
        account.withdraw(150);
    }
}

使用JUnit框架来运行这些测试用例,并确保所有的测试都能通过。

以上就是对于'门 | GATE-IT-2004 | 第83题'的介绍和解析。希望能对你理解和解决这道编程题提供一些帮助。