当前位置: 首页 > news >正文

实验3掌握 Java 如何使用修饰符,方法中参数的传递,类的继承性以及类的多态性

实验类型:●验证性实验  ○综合性实验  ○设计性实验

实验目的:

  1. 通过实践环节掌握 Java 如何使用修饰符,方法中参数的传递,类的继承性以及类的多态性
  2. 通过亲手编程掌握 Java 语言编程的方法,学会使用文件的读写操作。

实验内容:

  1. 1)编写一个矩形Circle,该类拥有:
  • 成员变量radius(私有,双精度型); // 存放圆的半径;        
  • 两个构造方法   
  1. Circle( )               // 将半径设为0         
  2. Circle(double radius)    //创建Circle对象时将半径初始化       
  • 三个成员方法       
        1. double getArea( )       //获取的面积     
        2. double getPerimeter( )  //获取的周长        
        3. void  show( )         //将圆的半径、周长、面积输出到屏幕
      1. 编写一个继承于上面Circle类的圆柱体Cylinder类拥有:  
  • 一个成员变量:double hight(私有,浮点型)  // 圆柱体的高
  • 一个构造方法:Cylinder (double Radius, double hight)  //创建Cylinder对象时将半径与高始化         
  • 两个成员方法   
  1. double getVolume( )    //获取圆柱体的体积  
  2. void  showVolume( )   //将圆柱体的体积输出到屏幕  

编写应用程序,创建圆柱体类的对象,分别设置圆柱体的底半径、圆柱体的高,计算并分别显示圆柱体的底半径、圆柱体的高以及圆柱体的体积。

  1. 编写一个Java程序。要求输入5名学生的成绩(从0到100的整数),并将这5个数保存到文件“StudentsData.txt”中。然后再编写一个程序,从文件“Studentsdata.txt”中读取这5个学生的成绩,计算并输出它们的平均成绩,然后再按从的顺序输出这5学生的成绩。

实验步骤:

  1. 编写程序代码 
  2. 调试程序并记录调试过程中出现的问题及修改程序的过程。
  3. 经反复调试后,运行程序并验证程序运行是否正确。
  4. 记录运行时的输入和输出。   

实验报告:根据实验情况和结果撰写并递交实验报告。

实验任务的程序运行运行界面及运行结果:

1.

2.

实验总结:

问题一:

通过本次实验,我掌握了Java中类的定义、构造方法的使用、成员方法的编写以及类的继承等基本概念。同时,我也学会了如何使用面向对象的思想来设计和实现简单的几何图形类及其派生类。在实验过程中,我遇到了一些问题,如类的继承关系不明确、成员方法的访问权限设置不当等,但通过查阅资料和反复调试,我最终成功解决了这些问题。

问题二:

通过本次实验,我掌握了Java中的文件操作技术,包括文件的创建、写入、读取以及关闭等。同时,我也学会了如何使用Java进行简单的数据处理,如计算平均值、排序等。在实验过程中,我遇到了一些问题,如文件路径不正确、文件读取失败等,但通过查阅资料和反复调试,我最终成功解决了这些问题。

此外,我还学会了如何编写清晰的代码和进行有效的调试,这对于我未来的学习和工作都非常有帮助。

每个实验任务程序代码:

1.

public class Circle {

    // 私有成员变量,存放圆的半径

    private double radius;

    // 无参构造方法,将半径设为0

    public Circle() {

        this.radius = 0;

    }

    // 有参构造方法,初始化半径

    public Circle(double radius) {

        this.radius = radius;

    }

    // 获取圆的面积

    public double getArea() {

        return Math.PI * radius * radius;

    }

    // 获取圆的周长

    public double getPerimeter() {

        return 2 * Math.PI * radius;

    }

    // 将圆的半径、周长、面积输出到屏幕

    public void show() {

        System.out.println("半径: " + radius);

        System.out.println("周长: " + getPerimeter());

        System.out.println("面积: " + getArea());

    }

    // Getter和Setter方法(可选,但推荐用于封装)

    public double getRadius() {

        return radius;

    }

    public void setRadius(double radius) {

        this.radius = radius;

    }

}

public class Cylinder extends Circle {

    // 私有成员变量,圆柱体的高

    private double height;

    // 构造方法,初始化半径和高

    public Cylinder(double radius, double height) {

        super(radius); // 调用父类的构造方法初始化半径

        this.height = height;

    }

    // 获取圆柱体的体积

    public double getVolume() {

        return getArea() * height; // 使用父类的getArea()方法计算底面积,再乘以高得到体积

    }

    // 将圆柱体的体积输出到屏幕

    public void showVolume() {

        System.out.println("圆柱体的体积: " + getVolume());

    }

    // 重写show方法,以显示圆柱体的所有相关信息(可选)

    @Override

    public void show() {

        super.show(); // 调用父类的show方法显示圆的信息

        System.out.println("高: " + height);

        showVolume(); // 显示圆柱体的体积

    }

    // Getter和Setter方法(可选,但推荐用于封装)

    public double getHeight() {

        return height;

    }

    public void setHeight(double height) {

        this.height = height;

    }

        public static void main(String[] args) {

            // 创建圆柱体对象,并设置底半径和高

            Cylinder cylinder = new Cylinder(5.0, 10.0);

            // 显示圆柱体的底半径、高和体积

            System.out.println("圆柱体的底半径: " + cylinder.getRadius());

            System.out.println("圆柱体的高: " + cylinder.getHeight());

            cylinder.showVolume(); // 或者使用cylinder.getVolume()来获取体积并自行打印

        }

    }

2.

import java.io.*;

import java.util.*;

    public class StudentScores {

        public static void main(String[] args) {

            Scanner scanner = new Scanner(System.in);

            int[] scores = new int[5];

            // 输入5名学生的成绩

            System.out.println("请输入5名学生的成绩(从0到100的整数):");

            for (int i = 0; i < 5; i++) {

                scores[i] = scanner.nextInt();

            }

            // 将成绩保存到文件

            try (BufferedWriter writer = new BufferedWriter(new FileWriter("StudentsData.txt"))) {

                for (int score : scores) {

                    writer.write(score + "\n");

                }

            } catch (IOException e) {

                e.printStackTrace();

            }

            // 从文件读取成绩并计算平均成绩和排序

            List<Integer> scoreList = new ArrayList<>();

            try (BufferedReader reader = new BufferedReader(new FileReader("Studentsdata.txt"))) { // 注意文件名大小写

                String line;

                while ((line = reader.readLine()) != null) {

                    scoreList.add(Integer.parseInt(line));

                }

            } catch (IOException e) {

                e.printStackTrace();

            }

            Collections.sort(scoreList, Collections.reverseOrder()); // 按从高到低的顺序排序

            double average = scoreList.stream().mapToInt(Integer::intValue).average().orElse(0);

            // 输出平均成绩和排序后的成绩

            System.out.println("平均成绩: " + average);

            System.out.println("成绩从高到低排序:");

            for (int score : scoreList) {

                System.out.println(score);

            }

        }}

http://www.dtcms.com/a/394315.html

相关文章:

  • 【本地持久化】功能-总结
  • 深入浅出现代FPU浮点乘法器设计
  • LinkedHashMap 访问顺序模式
  • 破解K个最近点问题的深度思考与通用解法
  • 链式结构的特性
  • 报表1-创建sql函数get_children_all
  • 9月20日 周六 农历七月廿九 哪些属相需要谨慎与调整?
  • godot实现tileMap地图
  • 【Unity+VSCode】NuGet包导入
  • QEMU虚拟机设置网卡模式为桥接,用xshell远程连接
  • Week 17: 深度学习补遗:Boosting和量子逻辑门
  • 【论文速递】2025年第13周(Mar-23-29)(Robotics/Embodied AI/LLM)
  • Webpack进阶配置
  • 【LeetCode 每日一题】3227. 字符串元音游戏
  • 【图像算法 - 26】使用 YOLOv12 实现路面坑洞智能识别:构建更安全的智慧交通系统
  • 009 Rust函数
  • IT疑难杂症诊疗室
  • 视频播放器下载推荐,PotPlayer‌,KMPlayer,MPC-HC,GOM Player‌VLC media player,MPV,
  • Day04 分治 递归 | 50. Pow(x, n)、22. 括号生成
  • (博主大回归)洛谷题目:P1986 元旦晚会 题解 (本题简)
  • Windows Docker 环境下 VLLM 大模型存储最优解:Docker-Desktop 实例目录与多容器协同挂载方案
  • Elasticsearch面试精讲 Day 20:集群监控与性能评估
  • 如何解决 pip install 安装报错 ModuleNotFoundError: No module named ‘pydantic’ 问题
  • 设置永不待机 系统语言
  • PWA(渐进式Web应用)
  • gdb文档_第二章
  • 基础IO
  • Linux开发工具
  • DIDCTF-2023陇剑杯
  • 软件设计师软考备战:第四篇 计算机网络技术