簡體   English   中英

我究竟做錯了什么? Java IllegalFormatConversionException

[英]What am I doing wrong? Java IllegalFormatConversionException

我有一些用於計算圓的屬性的代碼:

package circleinfo;

import java.util.Scanner;

public class Circleinfo {

    public static void main(String[] args) {

        Scanner input=new Scanner(System.in);
        int r;

        System.out.print("Enter the radius of the circle to find circumference, diameter, and area\n");

        r = input.nextInt();

        System.out.printf("The circumference is %f\n",(2*r*Math.PI));
        System.out.printf("The diameter is %f\n",(r*2));
        System.out.printf("The area is %f\n",(r*r*Math.PI));

    }
}

它計算周長,但不計算其余部分。

Enter the radius of the circle to find circumference, diameter, and area

10

The circumference is 62.831853

Exception in thread "main" java.util.IllegalFormatConversionException: f != java.lang.Integer
    at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4045)
    at java.util.Formatter$FormatSpecifier.printFloat(Formatter.java:2761)
    at java.util.Formatter$FormatSpecifier.print(Formatter.java:2708)
    at java.util.Formatter.format(Formatter.java:2488)
    at java.io.PrintStream.format(PrintStream.java:970)
    at java.io.PrintStream.printf(PrintStream.java:871)
    at circleinfo.Circleinfo.main(Circleinfo.java:30)
The diameter is Java Result: 1

r是一個int ,所以r*2也是一個int ,這意味着在你的第二個打印語句中, %f不能被使用。 請嘗試%d

回想一下%f用於浮點數,而%d用於整數。 這在Formatter的文檔中有概述(請參閱格式字符串語法 )。

(r*2)將是一個int而不是一個float因為rint2int 請改用%d

%c          char    Character
%d          int         Signed decimal integer.  
%e, %E      float       Real number, scientific notation (lowercase or uppercase exponent marker)
%f         float    Real number, standard notation.

這是因為您必須在直徑的結果中放入%d格式而不是%f

import java.util.Scanner;
public class CircleInfo{
    public static void main(String[] args){

            Scanner input = new Scanner(System.in);
            int radio;
            System.out.print("Input radio: ");
            radio = input.nextInt();

            System.out.printf("%s%d%n","Diameter= ",(2*radio));
            System.out.printf("%s%f%n","Area= ",(Math.PI*radio*radio));
            System.out.printf("%s%f%n","Circumference = ",(2*Math.PI*radio));
    }
}

暫無
暫無

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

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