0

i am new to java, i just want to show an error message if user hit escape key from the keyboard or click on X button of showInputDialog or press cancel the program closes normally,

like now if i close or cancels the inputDialog it gives following error

Exception in thread "main" java.lang.NullPointerException
at Main.main(Main.java:11)

i also tried to throw exception JVM but it does not works as i expected, here is my code:

String userInput;
BankAccount myAccount = new BankAccount();

while (true){
   userInput = JOptionPane.showInputDialog("1. Withdraw\n2. Deposit\n3. View Balance\n4. Exit");
    switch (userInput){

        case "1":
            myAccount.withdraw(Integer.parseInt(JOptionPane.showInputDialog("Please Enter ID: ")),Double.parseDouble(JOptionPane.showInputDialog("Please Enter Amount to Withdraw: ")));
            break;
        case "2":
            myAccount.deposit(Integer.parseInt(JOptionPane.showInputDialog("Please Enter ID: ")),Double.parseDouble(JOptionPane.showInputDialog("Please enter Amount to Deposit: ")));
            break;
        case "3":
            myAccount.viewBalance(Integer.parseInt(JOptionPane.showInputDialog("Please Enter ID: ")));
            break;
        case "4":
            myAccount.exit();
            System.exit(0);
        default:
            JOptionPane.showMessageDialog(null,"Invalid Input\nPlease Try Again");
            break;
    }
}

i just want to show an error message if user click X or cancels the prompt, how can i catch this? so i'll implement my logic there

  • Possible duplicate of [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – George Z. Sep 03 '18 at 18:43
  • The problem is on line 11. We have no idea which statement is line 11. Found line 11 in your code and determine which variable on the line is null and then fix the problem. – camickr Sep 03 '18 at 18:48
  • i just want to show an error message if user click X or cancels the prompt, how can i catch this? so i'll implement my logic there – Junaid Ahmed Sep 03 '18 at 18:49

1 Answers1

0

JOptionPane.showInputDialog returns null, instead of a string, if the user clicks the 'x' or the Cancel button. So instead of:

while (true){
  userInput = JOptionPane.showInputDialog("1. Withdraw\n2. Deposit\n3. View Balance\n4. Exit");
  switch (userInput){

    case "1": ...

You would want to do something like:

while (true){
  userInput = JOptionPane.showInputDialog("1. Withdraw\n2. Deposit\n3. View Balance\n4. Exit");
  if (userInput == null) {
    JOptionPane.showMessageDialog(null, "Invalid Input\nPlease Try Again", "Cannot Cancel", JOptionPane.ERROR_MESSAGE);
    continue;
  }
  switch (userInput){

    case "1": ...

This will catch the cancel/'x' case, and the continue will have it skip to the next iteration of the while loop rather than throwing an error when it tries to use a switch statement with null.