实验二 Java 语言类与对象应用练习(课内实验)

一、实验目的

本次实验的主要目的是练习在程序中定义类的方法和对象的方法,并掌握应
用对象调用成员完成所需功能的方法,并掌握包和嵌套类的应用。

二、实验要求

1. 认真阅读实验内容,完成实验内容所设的题目。
2. 能够应用多种编辑环境编写 Java 语言源程序。
3. 认真体会类与对象的概念。
4. 将实验结果书写在实验报告中。

三、实验内容

. 运行下列程序,观察程序的运行结果
A.程序一
package org.example;

public class Main
{
    private String ownerName;
    private float curSpeed;
    private float curDirInDegree;
    public Main(String ownerName)
    {
        this.ownerName=ownerName;
    }
    public Main(String ownerName, float speed, float dirInDegree)
    {
        this(ownerName);
        this.curSpeed=speed;
        this.curDirInDegree=dirInDegree;
    }
    public String getOwnerName()
    {
        return ownerName;
    }
    public float getCurDirInDegree()
    {
        return curDirInDegree;
    }
    public float getCurSpeed()
    {
        return curSpeed;
    }
    public void changeSpeed(float curSpeed)
    {
        this.curSpeed = curSpeed;
    }
    public void stop()
    {
        this.curSpeed=0;
    }
    public static void main(String[] args)
    {
        Main car=new Main("成龙",200f,25f);
        System.out.println("车主姓名: "+car.getOwnerName());
        System.out.println("当前车速: "+car.getCurSpeed());
        System.out.println("当前转向角度: "+car.getCurDirInDegree());
        car.changeSpeed(80);
        System.out.println("在调用changeSpeed(80)后,车速变为"+car.getCurSpeed());
        car.stop();
        System.out.println("在调用stop()后, 车速变为: "+car.getCurSpeed());
    }
}
B.程序二
package org.example;

import java.util.Calendar;
class Time
{
    private Calendar t;
    private int y, m, d, hh, mm, ss;
    Time ()
    {
        t=Calendar.getInstance();
        y=t.get(t.YEAR);
        m=t.get(t.MONTH)+1;
        d=t.get(t.DATE);
        hh=t.get(t.HOUR_OF_DAY);
        mm=t.get(t.MINUTE);
        ss=t.get(t.SECOND);
    }
    public String getDate()
    {
        return y+" 年"+m+"月"+d+"日";
    } public String getTime()
{
    return hh+" 时"+mm+"分"+ss+"秒";
}
}
public class Main
{
    public static void main(String[] args)
    {
        Time t=new Time();
        System.out.println("当前日期:"+t.getDate());
        System.out.println("当前时间:"+t.getTime());
    }
}

C.程序三
package org.example;

public class Main
{
    public static void main(String[] args)
    {
        Test_static.showstatic();
        Test_static test_ob1 = new Test_static();
        System.out.println(test_ob1.static_a);
        test_ob1.show();
        Test_static test_ob2 = new Test_static();
        System.out.println(test_ob1.static_a);
        test_ob1.show();
        System.out.println(Test_static.static_a);
        Test_static.showstatic();
        Test_static.shownostatic(test_ob2);
        Test_static.showstatic();
    }
}
class Test_static
{
    int no_static_a;
    static int static_a=0;
    public Test_static()
    {
        static_a++;
        no_static_a=3;
    }
    public static void showstatic()
    {
        System.out.println(static_a); }
    public static void shownostatic(Test_static a)
    {
        System.out.println(a.no_static_a);
    }
    public void show()
    {
        System.out.println(no_static_a);
    }
}
D.程序四
package org.example;

public class Main
{
    public static void main(String[] args)
    {
        int x[] = {3, 2, 1, 5, 6, 9, 7, 8};
        Outer outOb=new Outer(x);
        outOb.Analyze();
    }
}
class Outer
{
    int nums[];
    Outer(int n[])
    {
        nums=n;
    }
    void Analyze()
    {
        Inner inOb=new Inner();
        System.out.println("Minimum: "+inOb.min());
        System.out.println("Maxmum: "+inOb.max());
        System.out.println("Average: "+inOb.avg());
    }
    class Inner
    {
        int min()
        {
            int m = nums[0];
            for (int i = 1; i < nums.length; i++)
                if (nums[i] < m) m = nums[i];
            return m;
        }
        int max() {
            int m=nums[0];
            for(int i=1;i<nums.length;i++)
                if(nums[i]>m)m=nums[i];
            return m;
        }
        int avg()
        {
            int a=0;
            for(int i=1;i<nums.length;i++)
                a+=nums[i];
            return a/nums.length;
        }
    }
}
2.编写程序完成下列功能
(1) 定义一个类,由构造方法初始化一个值作为一个正方形的边长,该类计
算出正方形的面积,并输出到屏幕上。
package org.example;

public class Main {
    private double sideLength;

    public Main(double sideLength) {
        this.sideLength = sideLength;
    }

    public double calculateArea() {
        return sideLength * sideLength;
    }

    public void displayArea() {
        System.out.println("正方形的面积为: " + calculateArea());
    }

    public static void main(String[] args) {
        Main square = new Main(5);
        square.displayArea();
    }
}
(2) 编程创建一个Box类,在其中定义三个变量表示一个立方体的长、宽和高,
再定义一个方法setDemo对这三个变量进行初始化,然后定义一个方法求立方体
的体积。创建一个对象,求给定尺寸的立方体的体积。
package org.example;

public class Main {
    private double length;
    private double width;
    private double height;

    public void setDemo(double length, double width, double height) {
        this.length = length;
        this.width = width;
        this.height = height;
    }

    public double calculateVolume() {
        return length * width * height;
    }

    public static void main(String[] args) {
        Main cube = new Main();
        cube.setDemo(3, 4, 5);
        double volume = cube.calculateVolume();
        System.out.println("立方体的体积为: " + volume);
    }
}

(3) 编写两个类:A和B,A创建的对象可计算两个正整数的最大公约数,B
创建的对象可以计算两个数的最小公倍数。要求B类中有一个成员变量用A类声
明的对象。
package org.example;

public class B {
    private A aObject;

    public B(A aObject) {
        this.aObject = aObject;
    }

    public int calculateLCM(int a, int b) {
        int gcd = aObject.calculateGCD(a, b);
        return (a * b) / gcd;
    }

    public static void main(String[] args) {
        A a = new A();
        B b = new B(a);

        int num1 = 12;
        int num2 = 18;

        int gcd = a.calculateGCD(num1, num2);
        int lcm = b.calculateLCM(num1, num2);

        System.out.println("最大公约数 " + num1 + " 和 " + num2 + " 是: " + gcd);
        System.out.println("最小公倍数 " + num1 + " 和 " + num2 + " 是: " + lcm);
    }
}
(4) 编写一个圆类Circle,该类拥有一个私有的成员变量radius,一个无参的构
造方法,一个有参的构造方法,三个成员方法,分别用于计算圆面积、圆周长和
输出圆半径、面积和周长,并定义主方法,输出半径为12.5的圆的周长和面积。
package org.example;
//Circle类定义
public class Circle {
    private double radius;

    // 无参构造方法
    public Circle() {
        this.radius = 0; // 可以设置默认值
    }

    // 有参构造方法
    public Circle(double radius) {
        this.radius = radius;
    }

    // 计算圆面积
    public double calculateArea() {
        return Math.PI * radius * radius;
    }

    // 计算圆周长
    public double calculatePerimeter() {
        return 2 * Math.PI * radius;
    }

    // 输出圆半径、面积和周长
    public void displayInformation() {
        System.out.println("圆半径:" + radius);
        System.out.println("圆面积:" + calculateArea());
        System.out.println("圆周长:" + calculatePerimeter());
    }
}
package org.example;
//主方法
public class Main {
    public static void main(String[] args) {
        // 创建半径为12.5的圆对象
        Circle circle = new Circle(12.5);

        // 输出圆的周长和面积
        circle.displayInformation();
    }
}
(5) 定义一个表示学生信息的类Student,要求如下:
⚫ 类Student的成员变量:
sNO 表示学号;sName表示姓名;
sSex表示性别;sAge表示年龄;
sJava:表示Java课程成绩。
⚫ 类Student带参数的构造方法:
在构造方法中通过形参完成对成员变量的赋值操作。
⚫ 类Student的方法成员:
getNo():获得学号;
getName():获得姓名;
getSex():获得性别;
getAge()获得年龄;
getJava():获得Java 课程成绩;
⚫ 根据类Student的定义,创建五个该类的对象,输出每个学生的信息,
计算并输出这五个学生Java语言成绩的平均值,以及计算并输出他们Java
语言成绩的最大值和最小值。
package org.example;

public class Main {
    public static void main(String[] args) {
        Student student1 = new Student("001", "小符", "男", 20, 91);
        Student student2 = new Student("002", "老罗", "男", 21, 89);
        Student student3 = new Student("003", "小羽", "女", 22, 92);
        Student student4 = new Student("004", "郭子", "男", 20, 88);
        Student student5 = new Student("005", "老吴", "男", 19, 91);

        System.out.println("学生学号1: " + student1.getNo() + " 姓名 " + student1.getName() + " 性别 " + student1.getSex() + " 年龄 " + student1.getAge() + " 成绩 " + student1.getJava());
        System.out.println("学生学号2:" + student2.getNo() + " 姓名 " + student2.getName() + " 性别 " + student2.getSex() + " 年龄 " + student2.getAge() + " 成绩 " + student2.getJava());
        System.out.println("学生学号3:" + student3.getNo() + " 姓名 " + student3.getName() + " 性别 " + student3.getSex() + " 年龄 " + student3.getAge() + " 成绩 " + student3.getJava());
        System.out.println("学生学号4:" + student4.getNo() + " 姓名 " + student4.getName() + " 性别 " + student4.getSex() + " 年龄 " + student4.getAge() + " 成绩 " + student4.getJava());
        System.out.println("学生学号5:" + student5.getNo() + " 姓名 " + student5.getName() + " 性别 " + student5.getSex() + " 年龄 " + student5.getAge() + " 成绩 " + student5.getJava());

        // 计算平均值
        double averageJava = (student1.getJava() + student2.getJava() + student3.getJava() + student4.getJava() + student5.getJava()) / 5.0;
        System.out.println("Java语言成绩平均值:" + averageJava);

        // 计算最大值
        int maxJava = Math.max(Math.max(Math.max(Math.max(student1.getJava(), student2.getJava()), student3.getJava()), student4.getJava()), student5.getJava());
        System.out.println("Java语言成绩最大值:" + maxJava);

        // 计算最小值
        int minJava = Math.min(Math.min(Math.min(Math.min(student1.getJava(), student2.getJava()), student3.getJava()), student4.getJava()), student5.getJava());
        System.out.println("Java语言成绩最小值:" + minJava);
    }
}
package org.example;

public class Student {
    private String sNO; // 学号
    private String sName; // 姓名
    private String sSex; // 性别
    private int sAge; // 年龄
    private int sJava; // Java课程成绩

    // 带参数的构造方法
    public Student(String sNO, String sName, String sSex, int sAge, int sJava) {
        this.sNO = sNO;
        this.sName = sName;
        this.sSex = sSex;
        this.sAge = sAge;
        this.sJava = sJava;
    }

    // 获取学生信息的方法成员
    public String getNo() {
        return sNO;
    }

    public String getName() {
        return sName;
    }

    public String getSex() {
        return sSex;
    }

    public int getAge() {
        return sAge;
    }

    public int getJava() {
        return sJava;
    }
}

四、实验总结

本次实验的主要目的是练习在程序中定义类的方法和对象的方法,并掌握应用对象调用成员完成所需功能的方法。同时,也学习了包和嵌套类的应用。在实验中,我学会了如何定义类、创建对象并调用对象的方法来实现特定功能。通过这次实验,我对面向对象编程有了更深入的理解,并且掌握了更多的编程技巧。我相信这些知识和技能将对我的编程能力有所提升。

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值