我有一些计算圆属性的代码:
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
用于 float ,而 %d
用于整数。 Formatter
的文档中对此进行了概述。 (参见 Format String Syntax)。
关于java - 我究竟做错了什么? Java 非法格式转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18542515/