难以将输出格式化为3位小数

时间:2015-03-29 15:01:32

标签: java

我对Java很陌生,我只是想通过一些课堂练习。

我已经完成了从给定半径计算用户周长和圆圈面积的任务。

import java.util.Scanner;

public class Circle {

    public static void main(String[] args) {
    System.out.println("Please enter the radius of your circle below: ");

    Scanner input = new Scanner(System.in);
    float r =input.nextFloat();

    float p = (float) (2 * Math.PI * r);
    float a = (float) ((Math.PI) * Math.pow(r,2));

    System.out.format("Your perimeter is %.3f", p + " and your area is %.3f", a);

    }
}

到目前为止,这是我的代码,我非常确定这是我所需要的,但编译器却抛出错误:

'线程中的异常" main" java.util.IllegalFormatConversionException:f!= java.lang.String'

我尝试过几次使用System.out系列,但我无法弄清楚我哪里出错了!

有什么想法吗?在此先感谢:)

2 个答案:

答案 0 :(得分:5)

由于type promotion

p + " and your area is %.3f"被解释为String。使用

System.out.format("Your perimeter is %.3f and your area is %.3f", p, a);

答案 1 :(得分:3)

    System.out.format("Your perimeter is %.3f and your area is %.3f", p, a);

原因是因为format方法要求第一个arg是格式字符串,后跟要打印的对象的varargs。你传递一个字符串作为第二个参数,并且你试图将它格式化为float,这导致抛出异常。