Problem Description
设计一个长方形类Rect,计算长方形的周长与面积。
成员变量:整型、私有的数据成员length(长)、width(宽);
构造方法如下:
(1)Rect(int length) —— 1个整数表示正方形的边长
(2)Rect(int length, int width)——2个整数分别表示长方形长和宽
成员方法:包含求面积和周长。(可适当添加其他方法)
要求:编写主函数,对Rect类进行测试,输出每个长方形的长、宽、周长和面积。
Input
输入多组数据;
一行中若有1个整数,表示正方形的边长;
一行中若有2个整数(中间用空格间隔),表示长方形的长度、宽度。
若输入数据中有负数,则不表示任何图形,长、宽均为0。
Output
每行测试数据对应一行输出,格式为:(数据之间有1个空格)
长度 宽度 周长 面积
Sample Input
1 2 3 4 5 2 -2 -2 -3
Sample Output
1 1 4 1 2 3 10 6 4 5 18 20 2 2 8 4 0 0 0 0 0 0 0 0
import java.util.Scanner;
abstract class Shape {
public abstract int length();
public abstract int area();
}
class Rect extends Shape {
int a, b;
public Rect(int a, int b) {
this.a = a;
this.b = b;
}
public int length() {
return 2*(a+b);
}
public int area() {
return a*b;
}
}
class Zheng extends Shape {
int a;
public Zheng(int a) {
this.a = a;
}
public int length() {
return 4*a;
}
public int area() {
return a*a;
}
}
public class Main {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
while(reader.hasNext()) {
String str = reader.nextLine();
String[] strs = str.split(" ");
int[] a = new int[100];
int i;
for (i = 0; i < strs.length; i++) {
a[i] = Integer.parseInt(strs[i]);
}
Shape shape;
if(i==2) {
shape=new Rect(a[0], a[1]);
if(a[0]>0&&a[1]>0) {
System.out.printf("%d %d %d %d\n",a[0], a[1], shape.length(), shape.area());
}
else {
System.out.println("0 0 0 0");
}
}
if(i==1) {
shape=new Zheng(a[0]);
if(a[0]>0) {
System.out.printf("%d %d %d %d\n",a[0], a[0], shape.length(), shape.area());
}
else {
System.out.println("0 0 0 0");
}
}
}
}
}