Java第三次實驗

一、實驗目的:
掌握Java類的結構、類的定義、方法和屬性的定義以及對象的實現;
掌握類及其成員修飾符的使用;掌握構造函數的使用;方法的參數傳遞和返回值的用法;
掌握類變量與實例變量,以及類方法與實例方法的區別。
二、實驗內容:
1. 定義一個學生類(Student),屬性有private的名字(name), public的年齡(age),專業(specialty)和封裝name屬性的方法:setName(),getName(),getspecialty()編寫Application,創建一個學生對象,設置name和age屬性值,然後調用一個方法(此方法將對象作爲參數傳遞,在方法中打印出學生的名字name和年齡age)。(學生類僅包含靜態成員變量和方法。)
2. 定義一個類Point,代表一個點,public屬性有x和y,方法有顯示點座標 show(),構造函數有兩個參數分別給x,y賦值,在main方法中構造兩個對象,再創建一方法(getMiddle)爲取兩個點構成線段的中點的座標,參數爲2個點對象,調用此方法後得到一個新的點,編寫Application,顯示該對象的座標值。
3. 定義一個複數(z=x+iy)類Complex,包含:
兩個屬性:實部x和虛部y
默認構造函數 Complex(),設置x=0,y=0
構造函數:Complex(int i,int j)
顯示覆數的方法:showComp()將其顯示爲如: 5+8i或5-8i 的形式。
求兩個複數的和的方法:(參數是兩個複數類對象,返回值是複數類對象)public Complex addComp(Complex C1,Complex C2)
求兩個複數的差的方法:(參數是兩個複數類對象,返回值是複數類對象)public Complex subComp(Complex C1,Complex C2)
求兩個複數的乘積的方法:(參數是兩個複數類對象,返回值是複數類對象,新複數實部=兩複數實部乘積-兩複數虛部乘積,新複數虛部=兩複數實部與虛部交叉乘積之和,)public Complex multiComp(Complex C1,Complex C2)
比較兩個複數是否相等的方法(參數是兩個複數類對象,返回值是boolean類型)public boolean equalComp(Complex C1,Complex C2)
在Application中測試該類的方法,實部x和虛部y可由main方法參數提供輸入。
三、實驗要求:
1. 正確地定義類、方法和屬性;
2. 學會方法的參數傳遞和返回值的用法;
3. 熟練使用類及其成員修飾符
4.使用構造函數創建類的對象;
5. 類變量與實例變量,以及類方法與實例方法的使用
6.程序應包括各個被調用方法的執行結果的顯示。
7.寫出實驗報告。要求記錄編譯和執行Java程序當中的系統錯誤信息提示,並給出解決辦法。(附源代碼、運行結果、和實驗的心得體會)。
四、實驗步驟:
1.(第1題)定義一個學生類(Student)及它的屬性和方法;定義主類和main(),在main()方法中創建學生對象,並通過對象調用它的方法setName(),getName(),輸出學生的名字name和年齡age。
2. (第2題) 定義類Point及它的屬性、方法和構造函數,定義主類和main(),在main()方法中創建兩個座標對象,,並通過對象調用getMiddle方法後得到一個新的點座標,調用show()顯示該對象的座標值。
3. (第3題)定義一個複數(z=x+iy)類Complex,及它的屬性、方法和構造函數;定義主類和main()方法,在main()方法中創建兩個複數類Complex對象,並通過複數類對象調用它們的屬性和方法,輸出方法執行結果。
五、自做實驗
1. 構造一個類來描述屏幕上的一個點,該類的構成包括點的x和y兩個座標,以及一些對點進行的操作,包括:取得點的座標值,對點的座標進行賦值,編寫應用程序生成該類的對象並對其進行操作。
2. 編寫實現:有一個三角形類Triangle,成員變量有底邊x和另一條邊y,和兩邊的夾角a(0<a<180),a爲靜態成員,成員方法有兩個:求面積s(無參數)和修改角度(參數爲角度)。
3. 編寫實現: 構造函數爲 Triangle(int xx,int yy,int aa) 參數分別爲x,y,a賦值 在main方法中構造兩個對象,求出其面積,然後使用修改角度的方法,修改兩邊的夾角,再求出面積值。(提示:求高的方法 h=y*Math.sin(a) )
注意:構造方法用於對成員變量初始化,無參數的構造方法將成員變量初始化爲0值。


程序代碼:
1,

public class Student {
private static String name;
public static int age;
public static String specially;

public Student(String name,int age)
{
Student.name=name;
Student.age=age;
}
public static void setName(String name)
{
Student.name=name;
}

public static String getName()
{
return name;
}

public static String getSpecially()
{
return specially;
}


public static void print(Student stu)
{

System.out.print("學生的姓名:"+Student.getName()+"\n"+"學生的年齡:"+Student.age);
}


public static void main(String[] args) {
// TODO Auto-generated method stub
Student stu=new Student("李明",20);
Student.print(stu);

}


}


2,
public class Point {
int x;
int y;

public Point(int x,int y)
{
this.x=x;
this.y=y;
}

public void show()
{
System.out.println("("+x+","+y+")");
}

public void getMiddle(Point p1,Point p2)
{
x=(p1.x+p2.x)/2;
y=(p1.y+p2.y)/2;
System.out.println("("+x+","+y+")");

}

public static void main(String args[])
{


Point pt1=new Point(2,3);
Point pt2=new Point(6,9);


pt1.show();
pt2.show();

pt1.getMiddle(pt1,pt2);


}
}

3,
import javax.swing.JOptionPane;
public class Complex {
int x;
int y;

public Complex()
{
this.x=0;
this.y=0;
}

public Complex(int x,int y)
{
this.x=x;
this.y=y;
}

public void showComp()
{
System.out.println("顯示覆數:"+this.x+"+"+this.y+"i"+".");
}

public Complex addComp(Complex c1,Complex c2)
{
Complex cx1 =new Complex();
cx1.x=c1.x+c2.x;
cx1.y=c1.y+c2.y;
return cx1;
}

public Complex subComp(Complex c1,Complex c2)
{
Complex cx2 =new Complex();
cx2.x=c1.x-c2.x;
cx2.y=c1.y-c2.y;
return cx2;
}

public Complex multiComp(Complex c1,Complex c2)
{
Complex cx3=new Complex();
cx3.x=c1.x*c2.x-c1.y*c2.y;
cx3.y=c1.x*c2.y+c2.x*c1.y;
return cx3;
}

public boolean equalComp(Complex c1,Complex c2)
{
if(c1.x==c2.x&&c1.y==c2.y)
{
System.out.println("兩個複數相等!");
return true;
}
else
{
System.out.println("兩個複數不相等!");
return false;
}
}


public static void main(String[] args) {
// TODO Auto-generated method stub
String Nc1;
String Nc2;
String Nc3;
String Nc4;
int c1,c2,c3,c4;

Nc1=JOptionPane.showInputDialog("請輸入第一個複數的實部:");
c1=Integer.parseInt(Nc1);
Nc2=JOptionPane.showInputDialog("請輸入第一個複數的虛部:");
c2=Integer.parseInt(Nc2);
Nc3=JOptionPane.showInputDialog("請輸入第一個複數的實部:");
c3=Integer.parseInt(Nc3);
Nc4=JOptionPane.showInputDialog("請輸入第一個複數的虛部:");
c4=Integer.parseInt(Nc4);


Complex cm1=new Complex(c1,c2);
Complex cm2=new Complex(c3,c4);
cm1.showComp();
cm2.showComp();
cm1.addComp(cm1, cm2).showComp();
cm1.subComp(cm1, cm2).showComp();
cm1.multiComp(cm1, cm2).showComp();
cm1.equalComp(cm1,cm2);

}

}

五。

public class TriangleTest {

public static void main(String[] args) {
Triangle t1=new Triangle(3,4,90);
t1.print();

Triangle t2=new Triangle(5,6,90);
t2.print();
t2.reapetA(30);
t2.print();


}

}


class Point
{
int x;
int y;

public Point(int x,int y)
{
this.x=x;
this.y=y;
}

public int getX()
{
return x;
}

public int getY()
{
return y;
}
}


class Triangle extends Point
{
static int aa;
double PI=3.1415926;

public Triangle(int xx,int yy,int aa)
{
super(xx,yy);
Triangle.aa=aa;
}

public float area()
{
return (float) ((x*y*Math.sin(PI*aa/180))/2);
}

public int reapetA(int a)
{
Triangle.aa=a;
return Triangle.aa;
}

public void print()
{
System.out.println("三角形的面積:"+area());
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章