I’m writing a program that lets the user input 6 temperature readings, and then either
- return the highest original values +celcius version
- return the original values + conversion into the celsius version.
the code where the arrays values are set is here:
System.out.print( "Enter Temperature:\t"); //Get the count...
Temp = LocalInput.nextInt();
WeatherSpots[K].CatchCount = Temp;
the error message that i get is this
java.util.IllegalFormatConversionException: f != java.lang.Integer
at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
at java.util.Formatter$FormatSpecifier.printFloat(Unknown Source)
at java.util.Formatter$FormatSpecifier.print(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.util.Formatter.format(Unknown Source)
at java.lang.String.format(Unknown Source)
at p2list.WeeklyReport(p2list.java:102)
at p2list.main(p2list.java:33)"
i’ve also found the exact phrase that gives me trouble:
String.format("%.2d", (WeatherSpots[K].CatchCount - 32) * 5 / 9)"
i know that the error happens when my "%._" doesn’t have the right specifier, but all of my variables and arrays are in int, so d should be working
here’s the rest of the code:
This is how i set the 1st array:
private static WeatherLocation[] WeatherSpots = new WeatherLocation[6];"
This is the class that later arrays use
public class WeatherLocations extends WeatherLocation {
public String LocationID;
public Integer CatchCount;"
arrays = WeatherSpots.LoccationID/Catchcount"
Here’s where the catchcount array is set with the user input temperatures
int K;
for(K = 0 ; K < 6 ; K++){
System.out.print( "Enter Temperature:\t");
Temp = LocalInput.nextInt();
WeatherSpots[K].CatchCount = Temp;
Here’s the method where i try to call on the WeatherSpots[K].catchcount values to convert to celcius
int K= 0;
for(K = 0 ; K < 6 ; K++){
System.out.println( "" + WeatherSpots[K].LocationID +"\t\t" + WeatherSpots[K].CatchCount + "\t\t" + String.format("%.2f", (WeatherSpots[K].CatchCount - 32) * 5 / 9));
What would be causing the error, if my arrays and variables are the proper types for using string.format?
In
you are trying to print an
intwith a format fordoubles orfloats. That causes theIllegalFormatConversionException: f != java.lang.Integer. Since the integer division truncates anyway, it isn’t very useful to print an integer with two places after the decimal point. Just divide by the floating point number9.0instead of theint9 to get a floating point number that you can format with%.2f.In your
the format
%.2dis invalid since it doesn’t make sense to print integers with places after the decimal point.