是否有其他方法可以在不使用数组的情况下编写此方法,例如使用for each
和if
语句?我只是想看看是否有更简单的方法来编写它。
/**
* Write a method that prints the number of movies of each star rating
*/
public void printRatingReport()
{
int[] numMovies = new int[5];
for (Movie m : movies){
numMovies[m.getStarRating()]++;
}
for (int i=0; i<=4; i++){
System.out.println(i+ " star movies " + numMovies[i]);
}
}
答案 0 :(得分:3)
使用Java 8可以做到
SortedMap<StarRating, Long> starCount = movies.stream()
.collect(Collectors.groupingBy(m -> m.getStarRating(),
TreeMap::new, Collectors.counting());
starCount.forEach((rating, count) -> System.out.println(rating + " star movies " + count));
答案 1 :(得分:0)
使用枚举。这样你可以使用foreach并可能将评级系统从5星改为2,6或更多,因为代码会更具凝聚力。
enum Stars {
One, Two, Three, Four, Five
}
public void starRatingReport() {
for (Stars starRating : Stars.values()) {
int number = 0;
for (Movie movie : movies) {
if (movie.getRating() == starRating) {
number++;
}
}
System.out.println(number + " Movies with rating " + starRating);
}
}
你也可以使用属性,但在我看来,它们有点复杂。