Симуляция java программы ATM с обработкой исключений - без ошибок и полного вывода
Вывод не является полным, и также не обрабатываются исключения. Пожалуйста помоги.
public class ATM {
private String message;
public ATM(String m) {
if (m == null || m.trim().equals(""))
throw new IllegalArgumentException("ATM name cannot be empty");
else {
message = m;
System.out.println("Name is " + message);
}
}
// public String getMessage() {
// return message;
// }
public void withdraw(Card c, double amount) throws NotEnoughMoneyInAccountException {
double bal = c.getBalance();
System.out.println(bal);
if (c == null)
throw new IllegalArgumentException("card cannot be null");
if (amount < 0)
throw new IllegalArgumentException("please enter amount");
if (bal > amount)
throw new NotEnoughMoneyInAccountException("money in account is less");
else {
bal = bal - amount;
c.setBalance(bal);
System.out.println(bal);
}
}
public void deposit(Card c, double amount) {
double bal = c.getBalance();
if (amount == 0)
throw new IllegalArgumentException("Please enter amount to deposit");
bal = bal + amount;
System.out.println(bal);
}
}
public class Card {
private double balance;
private String owner;
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
}
public class NotEnoughMoneyInAccountException extends Exception
{
public NotEnoughMoneyInAccountException(String m)
{
super(m);
}
}
public class TestATM {
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
System.out.println("Starting");
Card c1 = new Card();
c1.setOwner("Shweta");
c1.setBalance(500);
System.out.println(c1.getOwner());
ATM atm = new ATM("SBI");
atm.withdraw(c1, 200);
atm.deposit(c1, 200);
}
catch (NotEnoughMoneyInAccountException e) {
// TODO Auto-generated catch block
e.getMessage();
}
catch(Exception e)
{
e.getMessage();
}
}
}
выход:
Starting
Shweta
Name is SBI
500.0
Когда я ввожу имя банкомата (строковое сообщение) как ноль, исключение должно обрабатываться соответственно, но этого не происходит. Даже когда я ввожу сумму для вывода < 0, он должен войти в цикл if и выдать исключение, которое должно быть обработано в основной программе, и этого не происходит.
Также я не получаю никакой ошибки.
1 ответ
Ваша проблема здесь:
catch (NotEnoughMoneyInAccountException e) {
// TODO Auto-generated catch block
e.getMessage();
}
catch(Exception e)
{
e.getMessage();
}
e.getMessage();
получит сообщение, но вы ничего не сделаете с ним. Заменить те e.getMessage();
звонки по e.printStackTrace();