1. 程式人生 > >計算各種圖形的周長(介面與多型)---Java

計算各種圖形的周長(介面與多型)---Java

Problem Description

定義介面Shape,定義求周長的方法length()。
定義如下類實現介面Shape的抽象方法:
(1)三角形類Triangle (2)長方形類Rectangle (3)圓形類Circle等。
定義測試類ShapeTest,用Shape介面定義變數shape,用其指向不同類形的物件,輸出各種圖形的周長。併為其他的Shape介面實現類提供良好的擴充套件性。
Input

輸入多組數值型資料(double);
一行中若有1個數,表示圓的半徑;
一行中若有2個數(中間用空格間隔),表示長方形的長度、寬度。
一行中若有3個數(中間用空格間隔),表示三角形的三邊的長度。

若輸入資料中有負數,則不表示任何圖形,周長為0。
Output

行數與輸入相對應,數值為根據每行輸入資料求得的圖形的周長(保留2位小數)。
Sample Input

1
2 3
4 5 6
2
-2
-2 -3
Sample Output

6.28
10.00
15.00
12.56
0.00
0.00
Hint

構造三角形時要判斷給定的三邊的長度是否能組成一個三角形,即符合兩邊之和大於第三邊的規則;
計算圓周長時PI取3.14。

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner reader=new Scanner(System.in);
		while(reader.hasNext())
		{
		String s=reader.nextLine();
		String ch[]=s.split(" ");
		if(ch.length==1)
		{
			double r=Double.valueOf(ch[0]);
			if(r<=0)
				System.out.println("0.00");
			else
			{
				double area=3.14*r*2;
				System.out.printf("%.2f\n",area);
			}
		}
		if(ch.length==2)
		{
			double a=Double.valueOf(ch[0]);
			double b=Double.valueOf(ch[1]);
			if(a<=0||b<=0)
				System.out.println("0.00");
			else
			{
				double area=2.0*(a+b);
				System.out.printf("%.2f\n",area);
			}
		}
		if(ch.length==3)
		{
			double a=Double.valueOf(ch[0]);
			double b=Double.valueOf(ch[1]);
			double  c=Double.valueOf(ch[2]);
			double  t;
			if(a>b)
			{
				t=a;a=b;b=t;
			}
			if(a>c)
			{
				t=a;a=c;c=t;
			}
			if(b>c)
			{
				t=b;b=c;c=t;
			}
			if(a<=0||b<=0||c<=0||(a+b<=c))
				System.out.println("0.00");
			else 
			{
				double area=a+b+c;
				System.out.printf("%.2f\n",area);
			}
		}
		
	}
	}
}