设计一个包含电影信息的 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);
}
最佳答案
你有一些语义(逻辑)错误。
numberOfPeopleRated
每次都会设置为 0。- 开关是多余的
- 您将
movieRating
添加到totalMovieRating
的位置不对! - 计算平均值时必须小心(双整数转换问题)
更正后的版本看起来有点像这样:
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/