编写一个完整的Java Application 程序。包含类Shape、类Oval、类ShapeTest,具体要求如下:
(1)编写一个抽象类Shape表示形状对象,包含以下成员
①属性:
PI:double型常数,值为3.1415926;
②方法:
- double area(), 抽象方法;
- double perimeter(),抽象方法;
(2)编写一个Shape类的子类Oval,表示椭圆对象,包含以下成员
①属性: - a:私有,double型,长轴半径;
- b:私有,double型,短轴半径;
②方法: - Oval(double a,double b), 构造方法,用参数设置椭圆的长轴半径和短轴半径
- Oval(),构造方法,将椭圆的长轴半径和短轴半径都初始化为0。
- double area(),重写Shape类中的area方法,返回椭圆的面积( )
- double perimeter(),重写Shape类中的perimeter方法,返回椭圆的周长( )
- public String toString( ),将把当前椭圆对象的转换成字符串形式,例如长轴半径为10.0,短轴半径为5,返回字符串"Oval(a:10.0,b:5.0)"。
(3)编写公共类Main,实现如下功能 - 输入长轴半径和短轴半径,并创建一个椭圆对象;
- 分别用area和perimeter方法,求出以上椭圆的面积和宽度并输出,输出过程中要求使用到toString方法,输出格式如下:
输入格式:
输入长轴半径和短轴半径
输出格式:
输出椭圆的面积和周长。
输入样例:
8 6
输出样例:
在这里给出相应的输出。例如:
The area of Oval(a:8.0,b:6.0) is 150.79644480000002
The perimeterof Oval(a:8.0,b:6.0) is 44.42882862370954
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
代码如下:
import java.util.Scanner;
abstract class Shape{
public static double PI=3.1415926;
abstract double area();
abstract double perimeter();
}
class Oval extends Shape{
private double a;
private double b;
public Oval(){
this.a=0;
this.b=0;
}
public Oval(double a,double b){
this.a=a;
this.b=b;
}
@Override
public double area(){
return Shape.PI*a*b;
}
@Override
public double perimeter(){
//return Shape.PI*(3.0*(a+b)-Math.pow((3.0*a+b)*(a+3.0*b),0.5));
return Shape.PI*Math.pow(2*(a*a+b*b),0.5);
}
@Override
public String toString(){
return "Oval(a:"+this.a+",b:"+this.b+")";
}
}
class Main{
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
double a=scan.nextDouble();
double b=scan.nextDouble();
Oval o=new Oval(a,b);
System.out.println("The area of "+o.toString()+" is "+o.area());
System.out.println("The perimeterof "+o.toString()+" is "+o.perimeter());
}
}