java 基础编程练习19
题目描述:
KiKi理解了继承可以让代码重用,他现在定义一个基类shape,私有数据为坐标点(x,y)
由它派生Rectangle类和Circle类,它们都有成员函数GetArea()求面积。派生类Rectangle类有数据:矩形的长和宽;派生类Circle类有数据:圆的半径。Rectangle类又派生正方形Square类,定义各类并测试。
输入三组数据,分别是矩形的长和宽、圆的半径、正方形的边长,输出三组数据,分别是矩形、圆、正方形的面积。圆周率按3.14计算。
输入描述:
输入三行,
第一行为矩形的长和宽,
第二行为圆的半径,
第三行为正方形的边长。
输出描述:
三行,分别是矩形、圆、正方形的面积。
示例1
输入
7 8
10
5
输出
56
314
25
import java.util.Scanner;
import java.text.DecimalFormat;
//图形类,基类
class Shape{
private int x;
private int y;
public Shape(int x,int y){
this.x=x;
this.y=y;
}
}
//长方形
class Rectangle extends Shape{
private int length;
private int width;
public Rectangle(int length, int width){
super(length, width);
this.length = length;
this.width = width;
}
public int GetArea(int x,int y){
return x*y;
}
}
//圆
class Circle extends Shape{
int r;
public Circle(int r){
super(r, r);
this.r = r;
}
public double GetArea(int r){
double Area;
Area = 3.14 * r * r;
return Area;
}
}
//正方形
class Square extends Rectangle{
int length;
public Square(int length){
super(length, length);
this.length = length;
}
public int GetArea(int length){
int Area;
Area = length * length;
return Area;
}
}
//主类
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int length = sc.nextInt();
int width = sc.nextInt();
int r = sc.nextInt();
int side = sc.nextInt();
//创建三个图形的对象
Rectangle rectangle = new Rectangle(length, width);
Circle circle = new Circle(r);
Square square = new Square(side);
//输出长方形面积
System.out.println(rectangle.GetArea(length, width));
//输出圆形面积:
//1)小数点后没有小数,则按照int型整数格式输出
//2)小数点后仅一位小数,则直接输出
//3)小数点后如果有两位或者大于两位,则保留两位小数输出
double AreaCircle = circle.GetArea(r);//圆的面积
int AreaCircle1 = (int)circle.GetArea(r);//面积的整数部分
DecimalFormat df = new DecimalFormat("###.0");//保留一位小数
double temp;
if (AreaCircle > AreaCircle1){//这个表示,面积带有小数
temp = Double.parseDouble(df.format(AreaCircle));
if (temp != AreaCircle){//如果不是一位小数的,输出两位小数,大于两位小数,也保留两位
System.out.println(String.format("%.2f", AreaCircle));
}
else{//只有一位小数,直接输出
System.out.println(AreaCircle);
}
}
else{//面积不带小数
System.out.println(AreaCircle1);
}
//正方形面积
System.out.println(square.GetArea(side));
}
}