讲师中心 微信公众号
AI工具推荐 视频效率加速

Java编写电影评分管理功能_掌握对象数组操作技巧

秋萱姑娘_3719

秋萱姑娘_3719

发布时间:2025-11-15 16:36:05

|

639人浏览过

|

来源于php中文网

原创

首先设计Movie类封装电影信息与评分数组,再实现添加评分和计算平均分方法,通过对象数组管理多部电影的评分数据。

java编写电影评分管理功能_掌握对象数组操作技巧

在Java中实现电影评分管理功能,是掌握对象数组操作的典型应用场景。通过这个小项目,不仅能加深对类与对象的理解,还能熟练运用数组存储和操作自定义对象,提升逻辑处理能力。

设计电影类(Movie)

首先定义一个Movie类,用于封装电影的基本信息和评分数据。

包含字段如:电影名称、导演、上映年份、评分数组等。使用double数组保存多个用户对该电影的评分,并提供添加评分、计算平均分等方法。

示例代码:

public class Movie {
    private String title;
    private String director;
    private int year;
    private double[] ratings;
    private int ratingCount;

    public Movie(String title, String director, int year, int maxRatings) {
        this.title = title;
        this.director = director;
        this.year = year;
        this.ratings = new double[maxRatings];
        this.ratingCount = 0;
    }

    // 添加评分
    public boolean addRating(double score) {
        if (ratingCount < ratings.length && score >= 0 && score <= 10) {
            ratings[ratingCount++] = score;
            return true;
        }
        return false;
    }

    // 计算平均分
    public double getAverageRating() {
        if (ratingCount == 0) return 0.0;
        double sum = 0;
        for (int i = 0; i < ratingCount; i++) {
            sum += ratings[i];
        }
        return sum / ratingCount;
    }

    // 显示电影信息
    public void displayInfo() {
        System.out.println("电影名: " + title);
        System.out.println("导演: " + director);
        System.out.println("年份: " + year);
        System.out.println("平均评分: " + String.format("%.2f", getAverageRating()));
        System.out.println("评分人数: " + ratingCount);
        System.out.println("---------------------------");
    }
}

使用对象数组管理多部电影

创建Movie对象数组,用来存储多个电影实例。通过循环遍历数组,调用每个对象的方法进行评分录入和信息展示。

Java Api Extractor
Java Api Extractor

从 Java 项目中提取 Controller 层接口定义为 JSON 数据。

下载

立即学习“Java免费学习笔记(深入)”;

注意初始化每个Movie对象,并合理设定最大评分数量,避免数组越界。

示例代码:

public class MovieRatingManager {
    public static void main(String[] args) {
        // 创建可容纳3部电影的对象数组
        Movie[] movies = new Movie[3];
        
        // 初始化电影对象
        movies[0] = new Movie("肖申克的救赎", "弗兰克·德拉邦特", 1994, 100);
        movies[1] = new Movie("霸王别姬", "陈凯歌", 1993, 80);
        movies[2] = new Movie("阿甘正传", "罗伯特·泽米吉斯", 1994, 90);

        // 为电影添加评分
        movies[0].addRating(9.5);
        movies[0].addRating(9.8);
        movies[0].addRating(9.2);

        movies[1].addRating(9.6);
        movies[1].addRating(9.3);

        movies[2].addRating(9.4);
        movies[2].addRating(9.7);
        movies[2].addRating(9.1);
        movies[2].addRating(9.0);

        // 输出所有电影评分信息
        for (Movie movie : movies) {
            movie.displayInfo();
        }
    }
}

关键技巧与注意事项

操作对象数组时,有几个重点需要掌握:

  • 对象数组本身只存储引用,必须通过new关键字逐个实例化每个元素,否则会抛出NullPointerException。
  • 评分数组建议设置上限,模拟真实系统中的容量限制,同时防止内存无限增长。
  • 封装性很重要,评分数组应设为private,通过公共方法访问,确保数据安全。
  • 平均分计算时注意评分数量为0的情况,避免除以零错误。
  • 可扩展方向包括:按评分排序、查找最高分电影、支持用户ID去重评分等。

基本上就这些。通过这个练习,你已经掌握了如何用Java对象数组管理复杂数据,理解了类的设计原则和数组的操作方式。不复杂但容易忽略细节,写代码时多注意边界条件和空指针问题。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

小橡皮AI

一款AI工具,主要用于小橡皮一键去AI味,将机器味重的内容改得更有活人感,防止因为 AI 内容被平台打上 AI 标签,以及限流,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

超级麦吉

一款通过数字员工协作完成调研、数据分析与文档制作的AI办公平台。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

相关专题

更多
c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

4248

2025.08.29

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

804

2025.10.23

C++ 智能指针与现代内存管理
C++ 智能指针与现代内存管理

深入讲解 C++ 现代内存管理的核心工具——智能指针,涵盖 unique_ptr 独占所有权语义、shared_ptr 引用计数机制与循环引用问题、weak_ptr 弱引用的应用场景、make_unique/make_shared 工厂函数的性能优势、自定义删除器的编写、RAII 资源管理思想的实践,以及从裸指针迁移到智能指针的重构策略,帮助开发者编写安全无泄漏的现代 C++ 代码。

379

2026.04.23

空指针异常处理
空指针异常处理

本专题整合了空指针异常解决方法,阅读专题下面的文章了解更多详细内容。

179

2025.11.16

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

40

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

20

2026.10.28

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

0

2026.10.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

120

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

80

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn