0

Hey guys, I'm working on a tip calculator as an excercise from the book I'm using to learn Java, and I've run in to a bit of a problem. When I run this code:

import java.util.Scanner;

 public class TipCalculator {
  public static void main(String[] args) {
   Scanner input = new Scanner(System.in);
   System.out.print
       ("Enter the subtotal of your ticket:");
   double subtotal = input.nextDouble();

   System.out.print
       ("Enter the percentage you would like to tip:");
   double tip = input.nextDouble();

   double tipAmount = (subtotal * tip) / 100.0;
   double total = (tipAmount + subtotal);

   System.out.printf("The tip amount is $" + "%5.2f", tipAmount + "\n" +
    "The Total ticket price is $" + "%5.2f", total);

  }
 }

the program runs normally, until it gets to the final line ("The tip amount is $"...), at which point, the console prints out:

The tip amount is $java.util.IllegalFormatConversionException: f != java.lang.String
    at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4045)
    at java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2761)
    at java.util.Formatter$FormatSpecifier.print(Formatter.java:2708)
    at java.util.Formatter.format(Formatter.java:2488)
    at java.io.PrintStream.format(PrintStream.java:970)
    at java.io.PrintStream.printf(PrintStream.java:871)
    at TipCalculator.main(TipCalculator.java:17)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

I'm not sure what's causing this to happen. I'm still learning how to use the printf function, but as far as I know, I've declared it exactly as the example in the book states as the correct usage. Anybody know where I went wrong here? Thanks for any and all help.

2
Contributors
2
Replies
13
Views
3 Years
Discussion Span
Last Post by DeadH34d
0

try it like this:

System.out.printf("The tip amount is $" + "%5.2f", tipAmount);
  System.out.printf("The Total ticket price is $" + "%5.2f", total);

the printf statement follows a certain structure:
basically: String - format - value to format.
you can't just add a String at the end and expect it to work as two println statements.

0

Yeah, that fixed it. Thanks for the clarification, it would have taken me forever to figure that out.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.