計算各種圖形的周長(介面與多型)
阿新 • • 發佈:2019-02-20
Problem Description
定義介面Shape,定義求周長的方法length()。 定義如下類實現介面Shape的抽象方法: (1)三角形類Triangle (2)長方形類Rectangle (3)圓形類Circle等。 定義測試類ShapeTest,用Shape介面定義變數shape,用其指向不同類形的物件,輸出各種圖形的周長。併為其他的Shape介面實現類提供良好的擴充套件性。Input
輸入多組數值型資料(double); 一行中若有1個數,表示圓的半徑; 一行中若有2個數(中間用空格間隔),表示長方形的長度、寬度。 一行中若有3個數(中間用空格間隔),表示三角形的三邊的長度。 若輸入資料中有負數,則不表示任何圖形,周長為0。Output
Example Input
1 2 3 4 5 6 2 -2 -2 -3
Example Output
6.28 10.00 15.00 12.56 0.00 0.00
Hint
構造三角形時要判斷給定的三邊的長度是否能組成一個三角形,即符合兩邊之和大於第三邊的規則; 計算圓周長時PI取3.14。Author
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()){ String str = in.nextLine(); String[] strs = str.split(" "); double []a = new double [100]; int i; for(i = 0; i < strs.length; i++) a[i] = Integer.parseInt(strs[i]); double x,y,z; if(i == 1){ x = a[0]; if(x <= 0) System.out.println("0.00"); else{ Circle c = new Circle(x); System.out.printf("%.2f\n",c.length()); } } else if(i == 2){ x = a[0]; y = a[1]; if(x <= 0) System.out.println("0.00"); else{ Rectangle r = new Rectangle(x,y); System.out.printf("%.2f\n",r.length()); } } else if(i == 3){ for(i = 0; i < 3; i++){ for(int j = 0; j < i; j++){ if(a[j] > a[j+1]){ double t = a[j]; a[j] = a[j+1]; a[j+1] = t; } } } x = a[0]; y = a[1]; z = a[2]; if(x + y > z ){ if(x <= 0) System.out.println("0.00"); else{ Triangle T = new Triangle(x,y,z) ; System.out.printf("%.2f\n",T.length()); } } else System.out.println("0.00"); } } in.close(); } } interface Shape{ //public void shape(); double length(); } class Triangle implements Shape{ double x1,y1,z1; Triangle(double x1, double y1 , double z1){ this.x1 = x1; this.y1 = y1; this.z1 = z1; } public double length(){ return x1 + y1 + z1; } } class Rectangle implements Shape{ double x,y; Rectangle(double x, double y){ this.x = x; this.y = y; } public double length(){ return (x + y) * 2; } } class Circle implements Shape{ double z; Circle(double z){ this.z = z; } public double length(){ return 2 * 3.14 * z; } }