You don't check if the user's input *can* be parsed to `double`, which will cause an exception when you parse. To check if your input is numerical, you can use the following function, which uses a regex : public static boolean isNumeric(String str) { return str.matches("-?\\d+(\\.\\d+)?"); //match a number with optional '-' and decimal. } **This example comes from this [SO's answer](https://stackoverflow.com/questions/1102891/how-to-check-if-a-string-is-a-numeric-type-in-java)** This way, you can validate your input instead of letting the application crash if I enter non-numerical characters as an input (note that this regex will accept "." and "-" as valid characters). You need to loop on your input until it is valid, so you could do something like this : String carCost = JOptionPane.showInputDialog("What is the total cost of the car?"); while(!isNumeric(carCost)){ carCost = JOptionPane.showInputDialog("Please enter a valid car cost : "); } Afterwards, you could extract this logic into a method, let's call it `getDoubleInput(String paneText, String invalidInputText)` private String getDoubleInput(String paneText, String invalidInputText){ String input = JOptionPane.showInputDialog(paneText); while(!isNumeric(input)){ input = JOptionPane.showInputDialog(invalidInputText); } return input; } Then you could, as @Caridorc's pointed, skip the `String` variable in your code and use this format : double carCost = Double.parseDouble(getDoubleInput("What is the total cost of the car?","Please enter a valid car cost : ")); double insCostP = Double.parseDouble(getDoubleInput("What is the yearly cost of the insurance?", "Please enter a valid yearly cost of insurance : ")); //... If you dislike have 2 `String` parameter to the method, you could use a generic invalid input message such as : "Please enter a valid input : ". Then the method would look like this : private String getDoubleInput(String paneText){ String input = JOptionPane.showInputDialog(paneText); while(!isNumeric(input)){ input = JOptionPane.showInputDialog("Please enter a valid input : "); } return input; } You wouldn't need the second parameter in the method call : double carCost = Double.parseDouble(getDoubleInput("What is the total cost of the car?"));