Software Development, Design Choices, Class Design,
Recursion and Iteration, Testing, and Command-line Arguments
A Racquetball or Volleyball Simulation

Laboratory Exercise: Command-Line Arguments

Quick Index


Although previous programs have provided relatively simple implementations of a racquetball/volleyball simulation using static fields and/or an object's field variables, a user must edit each program, recompile, and rerun to change between racquetball and volleyball.

Another approach utilizes a command-line parameters to allow the user to specify the game when the program is run — without having to edit and recompile. In this approach, the program utilizes String parameters in the main method to determine which game is desired.

To get started, recall that a program includes these static variables:

    public static String game;       // "racquetball" or "volleyball"
    public static int numberOfGames = 1000;
    public static boolean winByTwo;  // winner must be ahead by at least 2 points

The following code shows a very simple mechanism at the start of main to accomplish this work.

    public static void main (String [] args)
    {   game = "";    // initially, game is unspecified
        // check any command-line argument
        if (args.length >= 1)
              game = args[0];
        // determine if server must win by 2 (e.g., in volleyball)
        winByTwo = game.equals("volleyball");
        // the remainder of the program proceeds as before

Program gives a recursive implementation with a command-line argument and with tracing a tracing variable (initially set to false.

Steps for this Lab

  1. Run with these command lines:

       java Game4Recur racquetball
       java Game4Recur volleyball
       java Game4Recur
       java Game4Recur swimming
       java Game4Recur racquetball volleyball
       java Game4Recur volleyball racquetball

    Describe what happens in each case.

  2. Review the code of, and explain how the code at the beginning of main works.

  3. Revise, so that the user can supply both the game and the number of games to be simulated on the command line.

    1. Assume "racquetball" or "volleyball" will be given as the first parameter and the number of games will be the second parameter.
    2. Allow the user to enter "racquetball" or "volleyball" and the number of games in either order. (The nature of these two parameters is different, so you will need to examine each parameter to determine which comes first.)
  4. Expand your program from the previous step to perform error checking. For example, one error might be printed if the user provides the wrong number of parameters. Another error might be printed if the name of the game is incorrect. Yet another error might be printed if the string with the number of games is not a positive integer.