天天看點

java 三角形類 Triangle

三角形類Triangle

設計一個名為 Triangle 的類來擴充 GeometricObject 類。該類包括:

1,三個名為 side1,side2,side3 的double 資料域表示這個三角形的三條邊,它們的預設值是1.0.
	2,一個無參構造方法建立的預設的三角形
	3,一個能建立帶指定side1,side2,side3的三角形的構造方法
	4,所有三個資料域的通路器方法
	5,一個名為getArea()的方法傳回這個三角形的面積
	6,一個名為getPerimeter()的方法傳回這個三角形的周長
	7,一個名為toString()的方法傳回這個三角形的字元串描述
	......
           

問題分析:

按部就班,根據要求,從資料域,到構造方法(無參,有參),到方法,到測試類
	學會使用繼承以及繼承的方法就好
           

代碼示範(已驗證):

1,建立的類:

// 建立的類
package java_testquestions;
class GeometricObject{
	private String color = "white";
	private boolean filled;
	private java.util.Date dateCreated;
	
	public GeometricObject() {
		dateCreated = new java.util.Date();
	}
	public GeometricObject(String color,boolean filled) {
		dateCreated = new java.util.Date();
		this.color = color;
		this.filled = filled;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public boolean filled() {
		return filled;
	}
	public void setFilled(boolean filled) {
		this.filled = filled;
	}
	public java.util.Date getDateCreated(){
		return dateCreated;
	}
	public String toString() {
		return "created on "+dateCreated +"\n color: "+color + " and filled: "+filled;
	}
}
public class Triangle extends GeometricObject
{
	private double side1;
	private double side2;
	private double side3;
	String color;
	
	Triangle(){
		side1 = 1.0;
		side2 = 1.0;
		side3 = 1.0;
	}
	public Triangle(double side1,double side2,double side3) {
		this.side1 = side1;
		this.side2 = side2;
		this.side3 = side3;
	}
	public double getSide1() {
		return side1;
	}
	public double getSide2() {
		return side2;
	}
	public double getSide3() {
		return side3;
	}
// 父類中已有該方法
	public void setColor(String Color) {
		color = Color;
	}
	public String getColor() {
		return color;
	}
	public double getArea() {
		double s = (side1+side2+side3)*1.0/2;
		double area = Math.sqrt(s*(s-side1)*(s-side2)*(s-side3));
		return area;
	}
	
	public double getPerimeter() {
		return side1+side2+side3;
	}
	public String toString() {
		return "Triangle: side1 = "+side1 +"side2 = "+side2 +" side3 = "+side3;
	}
}
           

2,測試類,Triangle_Test

// 測試類
package java_testquestions;

import java.util.Scanner;

public class Triangle_Test 
{
	public static void main(String[] args)
	{
		Scanner input = new Scanner(System.in);
		
		System.out.println("請輸入三角形的三條邊:"); // 需要用字元串類型輸入,這樣在下面 輸入顔色時就不會報錯
		String side11 = input.nextLine();
		double side1 =  Double.parseDouble(side11);
		String side22 = input.nextLine();
		double side2 =  Double.parseDouble(side22);
		String side33 = input.nextLine();
		double side3 =  Double.parseDouble(side33);
//		double side1 = input.nextDouble();
//		double side2 = input.nextDouble();
//		double side3 = input.nextDouble();
		Triangle triangle = new Triangle(side1,side2,side3);
		
		System.out.println("請輸入三角形的顔色: ");
		String color = input.nextLine();
		triangle.setColor(color);
		System.out.println("\n");
		
		System.out.println("請輸入是否填充 true or false:");
		boolean filled = input.nextBoolean();
		triangle.setFilled(filled);
		
		System.out.println("三角形的面積為 :"+triangle.getArea());
		System.out.println("三角形的周長為 :"+triangle.getPerimeter());
		System.out.println("三角形的顔色為 :"+triangle.getColor());
		System.out.println("三角形是否填充 :"+triangle.filled());
	}
}

           

泡泡:

建立類的話認真點應該沒什麼,在測試類裡面有一個細節需要注意:在輸入 double 類型 的邊長時,要先使用字元串類型輸入,然後在轉化為double類型資料,轉化方式如下:

String side11 = input.nextLine();
	 double side1 =  Double.parseDouble(side11);
	 String side22 = input.nextLine();
	 double side2 =  Double.parseDouble(side22);
	 String side33 = input.nextLine();
	 double side3 =  Double.parseDouble(side33);
           

嗯,ok,收工。