<h2>3.1<span style="font-family:楷體_GB2312;">、實驗目的</span></h2><p>l 進一步掌握類的定義和對象的創建</p><p>l 掌握訪問控制符的關係(<span style="font-family:Times New Roman;">public</span><span style="font-family:宋體;">、</span><span style="font-family:Times New Roman;">priviate</span><span style="font-family:宋體;">、</span><span style="font-family:Times New Roman;">protect</span><span style="font-family:宋體;">)</span></p><p> </p><h2>3.2<span style="font-family:楷體_GB2312;">、實驗準備</span></h2><p>(<span style="font-family:Times New Roman;">1</span><span style="font-family:宋體;">) </span><span style="font-family:Times New Roman;">JDK</span><span style="font-family:宋體;">安裝</span></p><p>(<span style="font-family:Times New Roman;">2</span><span style="font-family:宋體;">) </span><span style="font-family:Times New Roman;">Eclipse</span><span style="font-family:宋體;">的安裝</span></p><p>(<span style="font-family:Times New Roman;">3</span><span style="font-family:宋體;">) 書本第四章節的複習</span></p><p> </p><h2>3.3<span style="font-family:楷體_GB2312;">、實驗內容與要求</span></h2><p>一、編寫一個<span style="font-family:Times New Roman;">Java</span><span style="font-family:宋體;">應用程序,該程序中有</span><span style="font-family:Times New Roman;">3</span><span style="font-family:宋體;">個類:</span><span style="font-family:Times New Roman;">Trangle</span><span style="font-family:宋體;">、</span><span style="font-family:Times New Roman;">Ladder</span><span style="font-family:宋體;">和</span><span style="font-family:Times New Roman;">Circle</span><span style="font-family:宋體;">,分別用來刻畫“三角形”、“梯形”和“圓形”。具體要求如下:</span><span style="font-family:Times New Roman;"> </span></p><p>a) Trangle<span style="font-family:宋體;">類具有類型為</span><span style="font-family:Times New Roman;">double</span><span style="font-family:宋體;">的三個邊,以及周長、面積屬性,</span><span style="font-family:Times New Roman;">Trangle</span><span style="font-family:宋體;">類具有返回周長、面積以及修改三個邊的功能。另外,</span><span style="font-family:Times New Roman;">Trangle</span><span style="font-family:宋體;">類還具有一個</span><span style="font-family:Times New Roman;">boolean</span><span style="font-family:宋體;">型的屬性,該屬性用來判斷三個屬能否構成一個三角形。</span><span style="font-family:Times New Roman;"> </span></p><p>b) Ladder<span style="font-family:宋體;">類具有類型</span><span style="font-family:Times New Roman;">double</span><span style="font-family:宋體;">的上底、下底、高、面積屬性,具有返回面積的功能。</span><span style="font-family:Times New Roman;"> </span></p><p>c) Circle<span style="font-family:宋體;">類具有類型為</span><span style="font-family:Times New Roman;">double</span><span style="font-family:宋體;">的半徑、周長和麪積屬性,具有返回周長、面積的功能</span></p><p> </p><p>二、編寫一個<span style="font-family:Times New Roman;">StringUtils</span><span style="font-family:宋體;">類,實現十進制到八進制的轉換並輸出。需要一個測試類加以測試。</span></p><p> </p>
import java.util.Scanner;

public class Mymain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		@SuppressWarnings("resource")
		Scanner sc=new Scanner(System.in);
		double l1,l2,l3;
		while(true)
		{
			System.out.println("請輸入三角形的三邊長:");
			l1=sc.nextDouble();
			l2=sc.nextDouble();
			l3=sc.nextDouble();
			if(l1+l2>l3&&l1+l3>l2&&l2+l3>l1)
			{
				break;
			}
		}
		Trangle sjx=new Trangle(l1,l2,l3);
		System.out.println("三角形的周長:"+sjx.getPerimeter());
		System.out.println("三角形的面積:"+sjx.getArea());
		System.out.println("請輸入梯形的上底,下底,高:");
		l1=sc.nextDouble();
		l2=sc.nextDouble();
		l3=sc.nextDouble();
		Ladder tx=new Ladder(l1,l2,l3);
		System.out.println("梯形的面積:"+tx.getArea());
		System.out.println("請輸入園的半徑:");
		l1=sc.nextDouble();
		Circle yuan=new Circle(l1);
		System.out.println("園的周長:"+yuan.getPerimeter());
		System.out.println("園的面積:"+yuan.getArea());
		System.out.println("請輸入一個10進制數:");
		int val=sc.nextInt();
		System.out.println("8進製表示:"+new StringUtils().change(val));
	}
}
class Trangle
{
	double l1,l2,l3;
	Trangle(double l1,double l2,double l3)
	{
		this.l1=l1;
		this.l2=l2;
		this.l3=l3;
	}
	double getPerimeter()
	{
		return l1+l2+l3;
	}
	double getArea()
	{
		double p=(l1+l2+l3)/2;
		return Math.sqrt(p*(p-l1)*(p-l2)*(p-l3));
	}
}
class Ladder
{
	double sd,xd,h;
	Ladder(double sd,double xd,double h)
	{
		this.sd=sd;
		this.xd=xd;
		this.h=h;
	}
	double getArea()
	{
		return (sd+xd)*h/2;
	}
}
class Circle
{
	double r;
	Circle(double r)
	{
		this.r=r;
	}
	double getPerimeter()
	{
		return 2*r*Math.PI;
	}
	double getArea()
	{
		return Math.PI*r*r;
	}
}
class StringUtils
{
	String change(int val)
	{
		String tem="";
		while(val>0)
		{
			tem+=val%8;
			val/=8;
		}
		if(tem.length()==0)
			tem="0";
		String re="";
		for(int i=tem.length()-1;i>=0;i--)
		{
			re+=tem.charAt(i);
		}
		return re;
	}
}