簡體   English   中英

我在 Java 中遇到 printf() 問題

[英]I am having trouble with printf() in Java

我正在做一個 Java 作業,我以前寫過這個簡單的代碼; 然而,我們這個學期的教授更感興趣的是我們如何格式化代碼,而不是它是否能正常工作。 我有 2 個使用 printf 的語句可以正常運行,但第 3 個語句沒有。 我將其更改為帶有平均值的 println 語句,並且打印正常,但是我需要使用 printf 進行此作業。 如果我注釋掉平均的 printf,那么前 2 個 printf 語句將毫無錯誤地運行。

        //Set variables for calculations and perform arithmetic
        int sum = num1 + num2 + num3;
        double average = (double)sum/3;
        int product = num1 * num2 * num3;
        int smallest;
        int largest;
        
        System.out.printf("The sum is: %d\n", sum);
        System.out.printf("The product is: %d\n", product);
        System.out.printf("The average is: %d\n", average);

錯誤如下:

The sum is: Exception in thread "main" 10
The product is: 18
The average is: java.util.IllegalFormatConversionException: d != java.lang.Double
    at java.base/java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4426)
    at java.base/java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2938)
    at java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:2892)
    at java.base/java.util.Formatter.format(Formatter.java:2673)
    at java.base/java.io.PrintStream.format(PrintStream.java:1209)
    at java.base/java.io.PrintStream.printf(PrintStream.java:1105)
    at Assignment_1.main(Assignment_1.java:49)

使用System.out.printf("The average is: %f\\n", average);

而不是System.out.printf("The average is: %d\\n", average);

因為雙變量的格式是%f%d是整數)

println工作正常,因為它會自動格式化變量。

發生這種情況是因為您的平均值是雙精度數,而不是整數。 當您嘗試打印平均值時,您使用的是%d並且它是 int 值的轉換說明符。 將其更改為%f可能會解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM