java - 不确定 addRating 和 getAverage 方法是否正确

标签 java

设计一个包含电影信息的 Movie 类。该类具有以下属性(成员变量):

  • 电影名称
  • MPAA 评级(例如 G、PG、PG-13、R)
  • 将这部电影评为 1(糟糕)的人数
  • 将这部电影评为 2(差)的人数
  • 将这部电影评为 3 分(还可以)的人数
  • 将这部电影评为 4 分(良好)的人数
  • 将这部电影评为 5 分(很棒)的人数

该类应具有以下成员函数:

  • 允许程序员创建具有指定名称和 MPAA 评级的对象的构造函数。在此构造函数中,对电影进行评分的人数应设置为 0。
  • 电影名称和 MPAA 评级的访问器和修改器函数
  • 一个函数 addRating,它接受一个整数作为输入参数。该函数应验证参数是否为 1 到 5 之间的数字,如果是,则增加对与输入参数匹配的电影进行评分的人数。例如,如果输入参数为 3,则对电影评分为 3 的人数应增加 1。
  • 函数 getAverage,返回所有电影评分的平均值

当我运行该程序时,它没有显示正确的平均值,例如,如果我将《冰河世纪》评分为 3 和 4,则其平均值应为 3.5,但它给出的是我的最后评分,即 4。这里我的两种方法是:

public static void addRating(int rating)
{
    Scanner keyboard = new Scanner(System.in);
    movieRating = rating;

    numberOfPeopleRated = 0;
    switch(movieRating)
    {
        case 1:
            numberOfPeopleRated++;
            break;
        case 2:
            numberOfPeopleRated++;
            break;
        case 3:
            numberOfPeopleRated++;
            break;
        case 4:
            numberOfPeopleRated++;
            break;
        case 5:
            numberOfPeopleRated++;
            break;
    }

    System.out.println("You rated " + movieName + " a " + movieRating);
}

public static void getAverage()
{
    totalMovieRating += movieRating;
    double averageRating = totalMovieRating / numberOfPeopleRated;
    System.out.println("The average Rating is " + averageRating);
}

最佳答案

你有一些语义(逻辑)错误。

  1. numberOfPeopleRated 每次都会设置为 0。
  2. 开关是多余的
  3. 您将 movieRating 添加到 totalMovieRating 的位置不对!
  4. 计算平均值时必须小心(双整数转换问题)

更正后的版本看起来有点像这样:

public static void addRating(int rating) {
    if (rating >= 1 && rating <= 5) {
        numberOfPeopleRated++;
        totalMovieRating += rating;
        System.out.println("You rated " + movieName + " a " + rating);
    } else {
        System.out.println("Wrong rating");
    }
}

public static void getAverage() {
    double averageRating = ((double)totalMovieRating) / numberOfPeopleRated;
    System.out.println("The average Rating is " + averageRating);
}

关于java - 不确定 addRating 和 getAverage 方法是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34993823/

相关文章:

java - Liferay Portlet 间通信

java - 如何在 xpath webdriver java 中转义反斜杠

java - Visual FoxPro如何处理日期计算? (来自java)date()-day(date())+1操作的结果?

java - git 文件中的奇怪名称

java - 简单的android应用程序列表适配器出错

java - Glassfish 服务器在应找到页面的路径上显示错误 404

java - 使用多态 JAX-WS web 服务参数

java - 如何将 Spring Boot 配置为 .war 文件以及安全性?

java - Bouncy CasSTLe 升级问题 1.60 和 1.6.1 或更高版本

java - 使用 MongoDB java 驱动程序备份和恢复数据库