Lab 10

CSCI 1913 – Introduction to Algorithms, Data Structures, and Program Development

Set up environment

Folder Structure

Your intelij project directory should look something like the following:

.
lab10
|-- out
`-- src
    |-- GameScoreTester.java
    |-- LeaderBoard.java
    `-- LeaderBoardTester.jav

CreateGameScore.java in the src folder

GameScore

The game score class will represent a single item in a classic video-game score board:

example of a video-game score board

GameScore

The first thing you’ll want to do is make a GameScore class. This should have 3 private instance variables:

  • the score (a double)
  • the name for this record (a String)
  • a boolean indicating if this score was earned on hard mode (true) or easy mode (false)

GameScore

Implement the following methods:

  • public GameScore(String name, double score, boolean hardMode) a constructor for this class.
  • public String getName() getter for the name property
  • public double getScore() getter for the score property
  • public boolean isHardMode() getter for the hardMode flag – returns true if the game was hardmode.
  • public String toString()
  • public boolean equals(Object o)

Make it Comparable

Your final task with this class is to make it Comparable. To begin, update the class declaration as follows:

    public class GameScore implements Comparable<GameScore>

LeaderBoard

You should begin by writing the three easy methods:

  • public int getSize() get the size of the leaderboard.
  • public T highScore() get the largest value in the leaderboard
  • public T lowScore() get the smallest value in the leaderboard

All three of these methods should be easy 1-line methods which run in time \(O(1)\).

Javadoc

Key Rules:

  • Starts with /** and ends with */
  • First sentence is a short summary — it appears in the generated HTML overview
  • @param tag should be listed for every parameter

Javadoc

   /**                                                                               
   * Calculates the average of an array of test scores.
   * Returns 0 if the array is null or empty.    
   *              
   * @param scores  an array of test scores, each in the range [0, 100]
   * @param count   the number of scores in the array
   * @return        the average of all scores, or 0 if the array is null or empty
   * @throws        IllegalArgumentException if count is negative
   *
   * @author        Adriana Picoral
   * @version       1.0
   */
  public double calculateAverage(double[] scores, int count) {
      if (scores == null || scores.length == 0) return 0;
      if (count < 0) throw new IllegalArgumentException("Count cannot be negative");

      double sum = 0;
      for (double score : scores) {
          sum += score;
      }
      return sum / count;
  }