import java.io.*; import java.util.*; class DepositAccountMain3 // Version of DepositAccountMain2 modified to make robust { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int sum; double interest; while(true) try { System.out.print("Initial deposit: "); sum = Integer.parseInt(in.readLine()); break; } catch(NumberFormatException e) { System.out.println("Not a valid figure"); } while(true) try { System.out.print("Interest rate%: "); interest = Double.parseDouble(in.readLine())/100; break; } catch(NumberFormatException e) { System.out.println("Not a valid figure"); } DepositAccount acc = new DepositAccount(sum,interest); char command; do { StringTokenizer line; String num; do { System.out.print("Command: "); line = new StringTokenizer(in.readLine()); } while(!line.hasMoreTokens()); command = line.nextToken().charAt(0); switch(command) { case 'b': System.out.println("Balance is "+acc.balance()); break; case 'n': acc.update(); System.out.println("Start month with "+acc.balance()); break; case 'd': num=line.hasMoreTokens()?line.nextToken():""; while(true) try { while(num.equals("")) { System.out.print("Enter amount: "); num=in.readLine(); } acc.deposit(Integer.parseInt(num)); break; } catch(NumberFormatException e) { System.out.println("Not a valid figure"); num=""; } break; case 'w': num=line.hasMoreTokens()?line.nextToken():""; while(true) try { while(num.equals("")) { System.out.print("Enter amount: "); num=in.readLine(); } if(!acc.withdraw(Integer.parseInt(num))) System.out.println("Withdrawal refused"); break; } catch(NumberFormatException e) { System.out.println("Not a valid figure"); num=""; } break; case 'q': break; default: System.out.println("Invalid command"); } } while(command!='q'); } }