1. 程式人生 > >JAVA基礎作業練習—自定義異常之模擬ATM

JAVA基礎作業練習—自定義異常之模擬ATM

package homework;

import java.util.InputMismatchException;
import java.util.Scanner;

class Atm {
	private double banlance;
	double num;
	private String ID;

	public Atm(String ID) {
		this.ID = ID;
	}

	public void Deposit(double banlance) throws NotNegativeNumber {
		if (banlance < 0) {
			throw new NotNegativeNumber();
		}
		if (this.banlance != 0) {
			banlance = this.banlance + banlance;
		} else
			this.banlance = banlance;
	}

	public void withDraw(double Money) throws InsufficientFundsException, NotNegativeNumber {
		if (Money > banlance) {
			throw new InsufficientFundsException();
		} else
			banlance = banlance - Money;
	}

	public void showBanlance() {
		System.out.println("您的餘額為:" + banlance);
	}

	public void show() {
		System.out.println(ID + " 使用者您好,歡迎使用本ATM");
		System.out.println("選擇1,存款業務");
		System.out.println("選擇2,取款業務");
		System.out.println("選擇3,查詢餘額業務");
		System.out.println("選擇4,退出");

	}
}

class NotNegativeNumber extends Exception { //自定義異常

	public NotNegativeNumber() {

	}
}

class InsufficientFundsException extends Exception { //自定義異常
	public InsufficientFundsException() {

	}
}

public class BankTest {

	public static void main(String[] args) {
		Atm atm = new Atm("12345-3455");
		atm.show();
		boolean flag = true;
		while (flag) {
			int num = new Scanner(System.in).nextInt();
			switch (num) {
			case 1:
				System.out.println("請輸入存款金額");
				while (true) {
					try {
						double banlance = new Scanner(System.in).nextDouble();
						atm.Deposit(banlance);
						atm.show();
						break;
					} catch (NotNegativeNumber e) {
						System.out.print("請輸入正確的金額,不能為負數");
					} catch (InputMismatchException e) {
						System.out.println("輸入正確的金額,不能為字元");
					}
				}
				break;
			case 2:
				System.out.println("輸入取款金額");
				while (true) {
					try {
						double money = new Scanner(System.in).nextDouble();
						atm.withDraw(money);
						atm.show();
						break;
					} catch (NotNegativeNumber e) {
						System.out.println("輸入正確的金額,不能為負數");
					} catch (InsufficientFundsException e) {
						System.out.println("抱歉,餘額不足");
					}
				}
				break;
			case 3:
				atm.showBanlance();
				atm.show();
				break;
			case 4:
				flag = false;
				System.out.println("交易完成,請取回您的卡");
				break;
			}
		}
	}

}