1. 程式人生 > >Java基礎 實驗二:類和物件

Java基礎 實驗二:類和物件

1.實驗目的
掌握類的宣告、物件的建立、方法的定義和呼叫、建構函式的使用。

2.實驗內容
1)定義一個表示學生資訊的類Student,要求如下:
① 類Student的成員變數:
      sNO 表示學號;
      sName    表示姓名;
      sSex    表示性別;
      sJava    表示Java課程成績;
② 類Student的方法成員:
      getNo():獲得學號;
      getName():獲得姓名;
      getSex():獲得性別;
      getAge()獲得年齡;
      getJava():獲得Java 課程成績
2)按(1)中學生類Student的定義,建立兩個該類的物件,儲存並輸出兩個學生的資訊計算機並輸出這兩個學生Java語言成績的平均值。
3)建立第 (1)題的Student類的5個物件,求他們Java語言成績的最大值和最小值。
4)根據下面的要求實現圓類Circle。
  ① 圓類Circle的成員變數:
      radius表示圓的半徑。
  ② 圓類Circle的方法成員:
      Circle():構造方法,將半徑置0
      Circle(double r):構造方法,建立Circle物件時將半徑初始化為r
      double getRadius():獲得圓的半徑值
      double getPerimeter():獲得圓的周長
      void disp():將圓的半徑、圓的周長和圓的面積輸出到螢幕

3.實驗程式碼

package seconddemo;
public class SecondDemo {
    public static class Student {//學生類
        //成員變數
        private String sNo;
        private String sName;
        private String sSex;
        private int sAge;
        private double sJava;
        public void setStudent(String no, String name, String sex, int age, int java) {
            sNo = no;
            sName = name;
            sSex = sex;
            sAge = age;
            sJava = java;
        }
        //成員方法
        public void getNO() {//獲取相關成員變數的值
            System.out.print(sNo+"\t");
        }
        public void getName() {
            System.out.print(sName+"\t");
        }
        public void getSex() {
            System.out.print(sSex+"\t");
        }
        public void getAge() {
            System.out.print(sAge+"歲\t");
        }
        public void getJava() {
            System.out.print(sJava+"分");
        }
    }
    public static class Circle{
        private double radius;
        public Circle(){
            radius = 0;
        }
        public Circle(double r) {
            radius = r;
        }
        public double getRadius() {
            return radius;
        }
        public double getPerimeter() {
            return 2 * 3.14 * radius;
        }
        public void disp() {
            System.out.println("圓的半徑為:" + radius);
            System.out.println("圓的周長為:" + (2 * 3.14 * radius));
            System.out.println("圓的面積為:" + (3.14 * radius * radius));
        }
    }
    public static void main(String[] args) {//主類
    //這是第二問
        System.out.println("第二問:");
        Student studentA = new Student();
        Student studentB = new Student();
        System.out.println("studentA和studentB的資訊如下:");
        studentA.setStudent("gl3162052051432", "Yu Dong", "  男", 20, 98);
        studentB.setStudent("gl3162052051431", "Xu chen", "  男", 20, 100);
        studentA.getNO();
        studentA.getName();
        studentA.getSex();
        studentA.getAge();
        studentA.getJava();
        System.out.println();
        studentB.getNO();
        studentB.getName();
        studentB.getSex();
        studentB.getAge();
        studentB.getJava();
        System.out.println();
        System.out.println(studentA.sName+"同學和"+studentB.sName+"同學的Java課程的平均分為:"+((studentA.sJava+studentB.sJava)/2)+"分");
    //這是第三問
        double max = -1;
        double min = 101;
        Student[] student = new Student[5];//定義陣列
        for(int i = 0; i<student.length; i++) {//初始化物件
            student[i] = new Student();
        }
        student[0].setStudent("gl3162052051432", "Yu Dong", "  男", 20, 98);
        student[1].setStudent("gl3162052051431", "Xu chen", "  男", 20, 62);
        student[2].setStudent("gl3162052051430", "Li hai", "  男", 20, 82);
        student[3].setStudent("gl3162052051429", "li da", "  男", 20, 77);
        student[4].setStudent("gl3162052051428", "Su wang", "  男", 20, 96);
        for(int i = 0; i<student.length; i++) {
            if(min > student[i].sJava)min = student[i].sJava;
            if(max < student[i].sJava)max = student[i].sJava;
        }
        System.out.println("\n第三問:");
        System.out.println("五名同學Java課程的最高成績為:"+max);
        System.out.println("五名同學Java課程的最底成績為:"+min);
    //這是第四問
        System.out.println();
        System.out.println("第四問:");
        Circle cirNameA = new Circle();
        Circle cirNameB = new Circle(6);
        System.out.println("無參初始化:");
        cirNameA.disp();
        System.out.println("帶參初始化:");
        cirNameB.disp();
    }
}

4.執行結果

5.注意事項

       在主類內部,新建一個另一類的類,必須加上關鍵字 static,否則在主函式裡呼叫非靜態的類,出現錯誤,提示“無法從靜態上下文中引用非靜態變數this”,因為main方法執行時,內部非靜態類還沒載入,所以訪問不到。在本例中在student類前加一個static,就可以直接在main中呼叫了,當然也可以將類放在外面。