西农大 Java实习 异常处理

实验题3

创建异常类的练习。需要使用3个Java程序来实现:

Bank.java

InsufficientFundsException.java

ExceptionDemo.java

创建银行类Bank,包括如下的方法:

 Bank(double balance)

 deposite(double dAmount)

 withdrawal(double dAmount)

show_balance()

创建异常类:InsufficientFundsException。若取钱数大于余额则作为异常处理。创建此异常类的思路是:(1)产生异常的条件是余额少于取额, 因此是否抛出异常要判断条件(注意throw的使用)。(2)取钱是withdrawal()方法中定义的动作,因此在该方法中产生异常。(3)处理异常安排在调用withdrawal()的时候,因此withdrawal()方法要声明异常,由上级方法调用(注意throws的使用)。创建此异常类的具体要求:异常类中需添加 excepMesagge()方法,用于调用Bank类的show_balance()方法,显示“您的取款金额为XXX,但是账户余额仅为XXX,操作不合法”。

创建主类: ExceptionDemo,用于测试新创建的两个类。 注意try-catch语句的使用, 并且在错误处理的catch块中,使用InsufficientFundsException异常类的excepMesagge()方法以及Exception类(父类)的toString()方法。最后添加finally块,输出“操作退出”。

package back11;

public class Bank {
	double balance;
	public Bank(double balance) {
		this.balance = balance;
	}
	public void deposite(double dAmount) {
		this.balance += dAmount;
	}
	public void withdrawl(double dAmount) throws InsufficientFundsExpection{
		if (dAmount > balance) {
			throw new InsufficientFundsExpection();
		}
		balance -= dAmount;
	}
	public double show_balance() {
		return this.balance;
	}
}
package back11;
import java.util.*;

public class ExceptionDemo {
	public static void main(String[] args) {
		Scanner rd = new Scanner(System.in);
		System.out.println("请创建账户:");
		double d = rd.nextDouble();
		Bank bk = new Bank(d);
		try {
			System.out.println("请存钱:");
			d = rd.nextDouble();
			bk.deposite(d);
			System.out.println("请输入取钱金额:");
			d = rd.nextDouble();
			bk.withdrawl(d);
			rd.close();
		} catch (InsufficientFundsExpection e) {
			System.out.println(e.excepMessage(bk.show_balance(), d));
			System.out.println(e.toString());
		}
		finally{
			System.out.println("您当前的余额为: " + bk.show_balance());
			System.out.println("操作退出!!!");
		}
	}
}
package back11;

public class InsufficientFundsExpection extends Exception{
	public InsufficientFundsExpection() {}
	public InsufficientFundsExpection(String str) {
		super(str);
	}
	public String excepMessage(double d1, double d2) {
		String s1 = String.valueOf(d1);
		String s2 = String.valueOf(d2);
		String s3 = "您的取款金额为"+s1+", 但是账户余额仅为" + s2;
		return s3;
	}
}

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值