题解 | #根据周长求面积#
根据周长求面积
http://www.nowcoder.com/practice/f67cf4ac46dc45769aea8d94e0e2f6bd
题意整理。
- 已知圆形和正方形的周长。
- 求对应的圆形和正方形的面积。
方法一(数学计算)
1.解题思路
- 首先利用父类构造函数初始化周长。
- 对于圆形,由于圆的周长为,圆的面积为,所以面积为。
- 对于正方形,由于正方形的周长为,正方形的面积为,所以面积为。
图解展示:
2.代码实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextDouble()) {
double s = scanner.nextDouble();
// Circle和Square是需要你定义的类
System.out.println(String.format("%.3f",new Circle(s).getArea()));
System.out.println(String.format("%.3f", new Square(s).getArea()));
}
}
}
class Shape {
private double s; // 周长
public Shape(double s) {
this.s = s;
}
public double getS() {
return s;
}
}
interface Area {
double getArea(); // 面积
}
// 圆形
class Circle extends Shape implements Area {
//利用父类构造函数初始化周长
Circle(double s){
super(s);
}
//圆的周长为s=2*PI*r,圆的面积为PI*r*r,所以面积为s*s/(4*PI)
public double getArea(){
return getS()*getS()/(4*Math.PI);
}
}
// 方形
class Square extends Shape implements Area {
//利用父类构造函数初始化周长
Square(double s){
super(s);
}
//正方形的周长为s=4*l,正方形的面积为l*l,所以面积为s*s/16
public double getArea(){
return getS()*getS()/16;
}
}
3.复杂度分析
- 时间复杂度:只需一次计算,所以时间复杂度为。
- 空间复杂度:不需要额外的空间,所以空间复杂度为。
xqxls的题解 文章被收录于专栏
牛客题解