2013-08-30 38 views
3
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)); 

    } 
} 

- 這就是它的樣子。它計算周長,但不是其餘。我在做什麼錯? Java IllegalFormatConversionException

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) 

直徑爲Java結果:1

+0

'System.out.printf( 「直徑%F \ n」 ,(r * 2));'在那裏'r * 2'是一個整數,但你像打一個浮點數一樣調用printf。在那裏使用'%d'而不是'%f'。 –

回答

7

rint,所以r*2也是int,這意味着在你的第二個print語句%f不能使用。代替嘗試%d

回想一下%f用於浮點數,而%d用於整數。這在Formatter(參見Format String Syntax)文檔中概述。

3

(r*2)將是一個int,而不是作爲floatrint2int。使用%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. 
+0

我們用什麼來加倍? –

+0

我會說%f,因爲你可以很容易地用它來設置小數點 – Manticore

1

這是因爲你不得不把%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)); 
    } 
}