我究竟做错了什么?(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: 1I have some code for calculating properties of a circle:
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)); } }It calculates circumference, but not the rest.
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 is an int, so r*2 is also an int, meaning that in your second print statement %f cannot be used. Try %d there instead.
Recall that %f is for floating point numbers while %d is for integers. This is outlined in the documentation of Formatter (see Format String Syntax).
更多推荐
发布评论