原意要求如圖:實作代碼如下:
package com.tiger.practice;
import java.util.Scanner;
/**
* Shape -- 抽象類
* @author tiger
*
*/
abstract class Shape{
//計算周長
public abstract double calcuPerimeter();
//計算面積
public abstract double calcuArea();
public abstract void getType();
}
/**
* 三角形類,三角形的任意兩邊的和大于第三邊
* @author tiger
*
*/
class Triangle extends Shape{
/**
* 三角形三邊
*/
double a;
double b;
double c;
/**
* 構造器,初始化三角形三邊
* @param a
* @param b
* @param c
*/
public Triangle(double a, double b, double c) {
this.a = a;
this.b = b;
this.c = c;
}
/**
* 計算三角形周長
*/
@Override
public double calcuPerimeter() {
double perimeter = a + b + c;
return perimeter;
}
/**
* 計算三角形面積
*/
@Override
public double calcuArea() {
double s = (a + b + c) / 2;
double area = Math.pow(s*((s - a)*(s - b)*(s - c)), 0.5);
return area;
}
@Override
public void getType() {
System.out.println("我是一個圓!");
}
}
/**
* 圓類
* @author tiger
*
*/
class Circle extends Shape{
//圓半徑
double r;
/**
* 構造器,初始化圓的半徑。
* @param r
*/
public Circle(double r) {
this.r = r;
}
/**
* 計算圓周長
*/
@Override
public double calcuPerimeter() {
double perimeter = 2 * Math.PI * r;
return perimeter;
}
/**
* 計算圓面積
*/
@Override
public double calcuArea() {
double are = Math.PI * r * r;
return are;
}
@Override
public void getType() {
System.out.println("我是一個三角形!");
}
}
public class Graphice {
public static void main( String[] args ){
test();
}
/**
* 測試
*/
public static void test(){
prtMenu();
Scanner sc = new Scanner( System.in );
int shapeType = sc.nextInt();
switch (shapeType) {
case 1: createTriangle();break;
case 2:createCircle();break;
default: prt();break;
}
}
/**
* 菜單提示消息
*/
public static void prtMenu(){
System.out.println();
System.out.println( "--------請選擇你要建立的圖形--------" );
System.out.println( "[1] 三角形" );
System.out.println( "[2] 圓形" );
System.out.println();
}
/**
* 錯誤提示消息
*/
public static void prt(){
System.err.println("輸入代号有誤,請輸入 1 或者 2 ,謝謝!");
Graphice.main(null);
}
/**
* 建立圓
*/
public static void createCircle(){
System.out.println("--------------圓----------------");
Scanner sc1 = new Scanner( System.in );
System.out.println("請輸入圓的半徑 r ");
double r = sc1.nextDouble();
Shape circle = new Circle(r);
circle.getType();
System.out.println("圓的面積 = " + circle.calcuArea());
System.out.println("圓的周長 = " + circle.calcuPerimeter());
}
/**
* 建立三角形
*/
public static void createTriangle(){
Shape triangle;
System.out.println("------------三角形---------------");
Scanner sc2 = new Scanner( System.in );
System.out.println("請輸入三角形三邊!");
double a = sc2.nextDouble();
double b = sc2.nextDouble();
double c = sc2.nextDouble();
//校驗三角形三邊合法性
if (a > 0 && b > 0 && c > 0 &&
(a + b) > c && (a + c) > b && (b + c) > a) {
triangle = new Triangle(a,b,c);
triangle.getType();
System.out.println("三角形的面積 = " + triangle.calcuArea());
System.out.println("三角形的面積 = " + triangle.calcuPerimeter());
}else {
System.out.println("\n三角形三邊不合法! 三角形建立失敗! "
+ "\n請重新輸入三邊\n");
createTriangle();
}
}
}