3

Java はまだ初心者で、ペーパー ボーイ向けの利益計算ツールを作成する任務を負っていますが、次のエラーを受け取りました。

Enter the number of daily papers delivered: 50
Enter the number of Sunday papers delivered: 35
The amount collected for daily papers was: Exception in thread "main" java.util
IllegalFormatConversionException: d != java.lang.Double
    at java.util.Formatter$FormatSpecifier.failConversion(Unknown Source)
    at java.util.Formatter$FormatSpecifier.printInteger(Unknown Source)
    at java.util.Formatter$FormatSpecifier.print(Unknown Source)
    at java.util.Formatter.format(Unknown Source)
    at java.io.PrintStream.format(Unknown Source)
    at java.io.PrintStream.printf(Unknown Source)
    at lab2b_MontelWhite.main(lab2b_MontelWhite.java:24)

これが私がこれまでに持っているものです:

//Paper Boy's Wages Calculator

import java.util.Scanner;
public abstract class lab2b
{
public static void main(String[] args)
{
        Scanner input = new Scanner( System.in);
        int x;
        int y;
        int result;

        System.out.print("Enter the number of daily papers delivered: ");
        x = input.nextInt();

        System.out.print("Enter the number of Sunday papers delivered: ");
        y = input.nextInt();
        double dailyResult = x * .3;

        System.out.printf("The amount collected for daily papers was: %d\n",
        dailyResult);
        int SundayResult = y * 1;

        System.out.printf("The amount collected for Sunday papers was: %d\n", 

        SundayResult);
        double totalResult = dailyResult + SundayResult;

        System.out.printf("The total amount of money collected was: %d\n",    

        totalResult);
        double ProfitResult = (SundayResult + dailyResult)/2;

        System.out.printf("The paper boy's profit is: %d\n", ProfitResult);
}
}

私は何を間違っていますか?ダブルスを追加し、「結果」の名前を変更しました。何が間違っているのかわかりません。

4

3 に答える 3

3

Formatterjavadoc を参照して、すべてのデータ型の書式文字を確認できます。

そのページから%d、数値を「10 進整数」としてフォーマットします。これはおそらくあなたを混乱させたものです。これは、 (30) 10を使用して 2 進数 (11110) 2を表すように、「10 進法整数」を意味します。変換タイプで注目すべき重要な点は、引数のカテゴリです。intその列の「整数」は、long、 、などの小数部分のない整数データ型を意味しますBigInteger。一方、「浮動小数点」とは、 、、などの小数部分を持つことを意味ます。あなたの場合、あなたはしたいです。doublefloatBigDecimal%f

数値の小数部に表示される桁数である精度も指定できます。お金を扱っているので、USD を使用した例を示します。

System.out.printf("The amount collected for Sunday papers was: $%.2f\n",
    SundayResult);

次のようなものが出力されます。

The amount collected for Sunday papers was: $65.33

それ以外の:

The amount collected for Sunday papers was: $65.333333333

資力:

于 2013-08-25T17:08:42.103 に答える
3

する必要があります-

System.out.printf("The amount collected for daily papers was: %f\n", dailyResult);
System.out.printf("The total amount of money collected was: %f\n",  totalResult);
System.out.printf("The paper boy's profit is: %f\n", ProfitResult);

double の場合は %f 、整数の場合は %d であるため。小数点以下2桁にしたい場合は、次のことができます-

String.format("%.2f", ProfitResult);

オラクルのチュートリアル。

于 2013-08-25T17:02:02.413 に答える