У меня есть эта учетная запись класса
import java.io.IllegalArgumentException;
class Account {
final int accountNo;
final Customer owner;
final double overdraft;
double balance = 0;
private Account(int accountNo, Customer owner, double overdraft) {
this.accountNo = accountNo;
this.owner = owner;
this.overdraft = overdraft;
}
void print() {
Out.println("Kontonummer: " + accountNo);
owner.print();
Out.format("Kontostand: %.2f%nÜberziehungsrahmen: %.2f%n", balance, overdraft);
}
public boolean deposit(double amount) throws IllegalArgumentException {
if (amount <= 0) {
throws new IllegalArgumentException("Cannot deposit negative amounts!");
break;
} else {
balance += amount;
return true;
}
public boolean withdraw(double amount) throws OverdraftLimitReachedException {
if (amount <= 0 || !isCovered(amount)) {
throw new OverdraftLimitReachedException("Overdraft limit has been reached", accountNo);
break;
} else {
balance -= amount;
return true;
}
boolean isCovered(double amount) {
return amount - overdraft <= balance;
}
boolean transfer(Account target, double amount) {
boolean success = withdraw(amount);
if (!success) return false;
target.deposit(amount);
return true;
}
}
}
}
Теперь у меня также есть это исключение, которое я написал
public class NoSuchAccountException extends AccountException {
public NoSuchAccountException(int accountNo) {
super(message, accountNo);
}
}
Теперь мне нужно выбросить это исключение в учетной записи класса при поиске номер учетной записи не существует.Теперь у меня вопрос, в каком методе (или функции, я думаю, что это то же самое, пожалуйста, поправьте меня, если я ошибаюсь) я выбрасываю это исключение.И после какой проверки.Как мне проверить, есть ли учетная запись number существует, и если его нет, я выброшу это исключение. Спасибо!
РЕДАКТИРОВАТЬ: Класс банковского дела, чтобы завершить программу
class Banking {
static final int CAPACITY = 100;
final Account[] accounts = new Account[CAPACITY];
int nOfAccounts = 0;
int createAccount(String firstName, String lastName, String phone, double overdraft) {
if (nOfAccounts == CAPACITY) return -1;
// use nOfAccounts as accountNo and index to array
Customer owner = new Customer(firstName, lastName, phone);
Account account = new Account(nOfAccounts, owner, overdraft);
accounts[nOfAccounts] = account;
nOfAccounts++;
return account.accountNo;
}
boolean deposit(int accountNo, double amount) {
if (accountNo < 0 || accountNo >= nOfAccounts) return false;
Account account = accounts[accountNo];
return account.deposit(amount);
}
boolean withdraw(int accountNo, double amount) {
if (accountNo < 0 || accountNo >= nOfAccounts) return false;
Account account = accounts[accountNo];
return account.withdraw(amount);
}
boolean transfer(int fromNo, int toNo, double amount) {
if (fromNo < 0 || toNo < 0 ||
fromNo >= nOfAccounts || toNo >= nOfAccounts) return false;
Account from = accounts[fromNo];
Account to = accounts[toNo];
return from.transfer(to, amount);
}
double getBalance(int accountNo) {
if (accountNo < 0 || accountNo >= nOfAccounts) return 0;
Account account = accounts[accountNo];
return account.balance;
}
double getBalance() {
double sum = 0;
for (int i = 0; i < nOfAccounts; i++) {
sum += accounts[i].balance;
}
return sum;
}
void print() {
Out.println("---------- Bankauszug ----------");
for (int i = 0; i < nOfAccounts; i++) {
accounts[i].print();
Out.println("--------------------------------");
}
Out.format("Bilanzsumme: %.2f%n", getBalance());
Out.println("--------------------------------");
}
// --------------------- Optionaler Teil ---------------------
public static void main(String[] args) {
Banking banking = new Banking();
char op;
do {
printMenu();
op = readOperation();
switch (op) {
case 'a': {
printTitle("Konto anlegen");
String firstName = getString("Vorname");
String lastName = getString("Nachname");
String phone = getString("Telefonnummer");
double overdraft = getDouble("Überziehungsrahmen");
int accountNo = banking.createAccount(
firstName, lastName, phone, overdraft);
printMessage("Anlegen von Konto " + accountNo, accountNo != -1);
break;
}
case 'e': {
printTitle("Einzahlen");
int accountNo = getInt("Kontonummer");
double amount = getDouble("Einzahlungsbetrag");
boolean success = banking.deposit(accountNo, amount);
printMessage("Einzahlen", success);
break;
}
case 'b': {
printTitle("Abheben");
int accountNo = getInt("Kontonummer");
double amount = getDouble("Abhebungsbetrag");
boolean success = banking.withdraw(accountNo, amount);
printMessage("Abheben", success);
break;
}
case 't': {
printTitle("Überweisen");
int fromNo = getInt("Von Kontonummer");
int toNo = getInt("Auf Kontonummer");
double amount = getDouble("Betrag");
boolean success = banking.transfer(fromNo, toNo, amount);
printMessage("Überweisen", success);
break;
}
case 'd':
banking.print();
break;
case 'q':
Out.println("Beenden");
break;
default:
Out.println("Ungültige Operation");
break;
}
} while(op != 'q');
}
static void printMenu() {
Out.println();
Out.println("*********** Bankverwaltung ********");
Out.println("Konto anlegen ................... a");
Out.println("Einzahlen ....................... e");
Out.println("Beheben ......................... b");
Out.println("Überweisen ...................... t");
Out.println("Übersicht drucken ............... d");
Out.println("Beenden ......................... q");
Out.print("Welche Menuoption? [a|e|b|t|d|q]: ");
}
static char readOperation() {
char ch = Character.toLowerCase(In.readChar());
In.readLine();
return ch;
}
static void printTitle(String text) {
Out.println("*** " + text + " ***");
}
static String getString(String text) {
Out.print(text + ": ");
return In.readLine();
}
static double getDouble(String text) {
Out.print(text + ": ");
return In.readDouble();
}
static int getInt(String text) {
Out.print(text + ": ");
return In.readInt();
}
static void printMessage(String operation, boolean success) {
String message = success ?
operation + " erfolgreich durchgeführt" :
"Ungültige Operation";
Out.println(message);
}
}