[英]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*2)
將是一個int
而不是一個float
因為r
是int
而2
是int
。 請改用%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.