6

我正在编写一个程序,让用户输入 6 个温度读数,然后

  1. 返回最高原始值+摄氏度版本
  2. 返回原始值 + 转换为摄氏度版本。

设置数组值的代码在这里:

System.out.print( "Enter Temperature:\t");   //Get the count...
        Temp = LocalInput.nextInt();
        WeatherSpots[K].CatchCount = Temp;

我得到的错误信息是这个

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)"

我还找到了给我带来麻烦的确切短语:

String.format("%.2d", (WeatherSpots[K].CatchCount - 32) * 5 / 9)"

我知道当我"%._"没有正确的说明符时会发生错误,但是我所有的变量和数组都在 int 中,所以 d 应该可以工作

这是其余的代码:

这就是我设置第一个数组的方式:

private static  WeatherLocation[] WeatherSpots = new WeatherLocation[6];"

这是后面数组使用的类

public class WeatherLocations extends WeatherLocation {
    public String LocationID;
    public Integer CatchCount;"

    arrays = WeatherSpots.LoccationID/Catchcount"

catchcount是使用用户输入温度设置数组 的位置

int K;
for(K = 0 ; K < 6 ; K++){
    System.out.print( "Enter Temperature:\t");
    Temp = LocalInput.nextInt();
    WeatherSpots[K].CatchCount = Temp;

这是我尝试调用WeatherSpots[K].catchcount值以转换为摄氏度 的方法

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));

如果我的数组和变量是使用的正确类型,会导致错误的原因是string.format什么?

4

1 回答 1

8

String.format("%.2f", (WeatherSpots[K].CatchCount - 32) * 5 / 9)

您正在尝试使用s 或sint的格式打印 an 。这导致. 由于整数除法无论如何都会截断,因此打印小数点后两位的整数并不是很有用。只需除以浮点数而不是9 即可得到一个浮点数,您可以使用.doublefloatIllegalFormatConversionException: f != java.lang.Integer9.0int%.2f

在你的

String.format("%.2d", (WeatherSpots[K].CatchCount - 32) * 5 / 9)

格式%.2d无效,因为打印小数点后的整数没有意义。

于 2012-06-24T23:34:53.203 回答