1. ホーム
  2. java

[解決済み] java.util.IllegalFormatConversionException: f != java.lang.String Error

2022-02-07 13:59:58

質問

import javax.swing.JOptionPane;

public class Minutes {

    public static void main(String[] args) {
        double  BasePlanCost = 20;
        final double BaseCostPerMinute=0.15;

        double MinutesUsed = Double.parseDouble(JOptionPane.showInputDialog("Please enter the amount of minutes Used: "));
        double CostForMinutes = BaseCostPerMinute * MinutesUsed;
        double GrandTotal = BasePlanCost + CostForMinutes;
        JOptionPane.showMessageDialog(null, String.format("$%.2f","**IST Wireless Receipt**","\n","Base Plan Cost:" +BasePlanCost,"/n","Cost For Minutes Used: "+ CostForMinutes,"/n","Grand Total :" +GrandTotal));

    }

}

このプログラムは、ユーザが入力した分数を入力し、CostForMinutesとBasePlanCostを加算して総計を計算するものである。 CostForMinutesはユーザが入力した分数とBaseCostPerMinuteを掛け合わせたものです。outは、すべての数値を小数点以下2桁で出力し、レシートとして出力します。

プログラムをコンパイルすると、分数を入力することはできますが、コードが崩れてこのようなエラーになります。

exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.String

どなたか教えてください。

EDIT このような出力にしたいのです。 http://i.stack.imgur.com/CubfC.png

解決方法は?

あなたが持っているのは

String.format("$%.2f","**IST Wireless Receipt**",

これは、第二引数の String を %.2f これは浮動小数点数のフォーマットで、うまくいきません。

フォーマットが先で、その後にフォーマットしたい値を入れるように整理し直す必要があります。

String.format("**IST Wireless Receipt**%n" +
              "Base Plan Cost: $%.2f%n" +
              "Cost For Minutes Used: $%.2f%n" +
              "Grand Total: $%.2f%n",
              BasePlanCost, CostForMinutes, GrandTotal)