Search code examples
javajava.util.scannerjoptionpanedecimalformatcurrency-formatting

Exception in thread "main" java.lang.NumberFormatException: empty String FloatingDecimal & parseDouble


I am getting an error. For some reason the error isn't showing up when I compile the code:

//This is the error I get Exception in thread "main" java.lang.NumberFormatException: empty String at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842) at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) at java.lang.Double.parseDouble(Double.java:538) at Project3A.main(Project3A.java:42)

    //Code starts here
    import java.util.scanner;
    import javax.swing.JOptionPane;
    import java.text.DecimalFormat;
    import java.util.Locate;
    import java.text.NumberFormat;

        public class Project3A
        {
             public static void main(String[] args)
             {
      int numloaves = 0;
      int nummilk = 0;
      double lbscheese = 0.00;
      double brdperloaf = 1.50;
      double milkperqrt = 1.00;
      double chseperlbs = 0.50;
      NumberFormat moneyFormat = NumberFormat.getCurrencyInstance(Locale.US);

      Scanner sc = new Scanner(System.in);
      System.out.println("Enter the number of loaves of bread: ");
      int numloaves = sc.nextInt();

      Scanner sc = new Scanner(System.in);
      System.out.println("Enter the number of quarts of milk: ");
      int nummilk = sc.nextInt();

      Scanner sc = new Scanner(System.in);
      System.ot.println("Enter the number of pounds of cheese: ");
      int chseperlbs = sc.nextInt();

      double brdcst = (numloaves * brdperloaves);
      double mlkcst = (nummilk * milkperqrt);
      double chsecst = (lbscheese * chseperlbs);
      double ttlcost = (brdcst + mlkcst + chsecst);

      String inputStr = JOptionPane.showInputDialog(null, "Enter number of apples");
      double value = Double.parseDouble(" ");

      System.out.println("Cost of Bread: " + brdcst);
      System.out.println("Cost of Milk: " + mlkcst);
      System.out.println("Cost of Cheese: " + chsecst);

      double d = 1.234567;
      DecimalFormat df = new DecimalFormat("#.##");
      JOptionPane.showMessageDialog(null, "Total Cost of bread, milk and cheese is " + df.format(d));
      System.out.println(df.format(d));
      }
}

Solution

  • This isn't valid Java:

    JOptionPane.showInputDialog,"Enter number of apples";
    

    When calling any method you must include the appropriate parameters within parenthesis, e.g.

    myMethodCall(1, 2, 3);
    

    Your call uses no parenthesis and doesn't make sense. Read the JOptionPane API to see what parameters you may need.