编辑:这本书有一个带圆柱体和使用体积的拼写错误,但程序的重点是运用静态方法,所以没关系。
我完成了这个程序并让它使静态方法与我的主类交互。我只是有十进制格式的问题。我用双打得到11位小数。我尝试过使用DecimalFormat,但无论我把它放在哪里,都没有任何影响。我现在需要做一些额外的工作吗?
import java.text.DecimalFormat; //import DecimalFormat
class Area{
//Area of a Circle
static double Area(double radius){
return Math.PI * (radius * radius);
}
//Area of a Rectangle
static int Area(int width, int length){
return width * length;
}
//Volume of a Cyclinder
static double Area(double radius, double height){
return Math.PI * (radius * radius) * height;
}
}
public class AreaDemo{
public static void main(String[] args){
//Variable Declarations for each shape
double circleRadius = 20.0;
int rectangleLength = 10;
int rectangleWidth = 20;
double cylinderRadius = 10.0;
double cylinderHeight = 15.0;
//Print Statements for the Areas
System.out.println("The area of a circle with a radius of " + circleRadius + " is " + Area.Area(circleRadius)); //Circle
System.out.println("The area of a rectangle with a length of " + rectangleLength + " width of " + rectangleWidth + " is " + Area.Area(rectangleLength, rectangleWidth)); //Rectangle
System.out.println("The area of a cylinder with radius " + cylinderRadius + " and height " + cylinderHeight + " is " + Area.Area(cylinderRadius, cylinderHeight)); //Cylinder
}
}
答案 0 :(得分:1)
如果你想使用decimalFormat,你可以这样,
double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
这将打印出1.23。如果您将格式增加到"#.###
,则为1.235
或者更适用于你
DecimalFormat df = new DecimalFormat("#.##");
//Print Statements for the Areas
System.out.println("The area of a circle with a radius of " + df.format(circleRadius) + " is " + df.format(Area.Area(circleRadius))); //Circle
// do same for your others
答案 1 :(得分:0)
您的decimal format
和Static methods
要控制浮点运算的精度,您应该使用java.math.BigDecimal.