Breaking the Program

Classic programmed-learning exercises, refreshed for modern Java and presented in the current MrStyner.com portfolio style.

Modern Java noteThis archive has been refreshed for Java 25 LTS. Core language concepts remain useful, while outdated setup instructions and browser-era Java are labeled or replaced. Java 26 is the current feature release; Java 25 is used here as the stable teaching baseline.
go to previous page   go to home page   go to next page
-45,  -23,  -87,  -56,  -92,  -12,  -36

Answer:

-92

Breaking the Program

Debugging a program is often difficult. Finding test cases that thouroughly test a program is an important part of this.

Here is our program, again:

class MaxAlgorithm
{
  public static void main ( String[] args ) 
  {
    int[] array =  { -20, 19, 1, 5, -1, 27, 19, 5 } ;
    int   max;

    // initialize the current maximum
    max = array[0];

    // scan the array
    for ( int index=0; index < array.length; index++ )
    { 
      if ( array[ index ] > max )    // examine the current element
        max = array[ index ];        // if it is the largest so far, change max
    }     
    System.out.println("The maximum of this array is: " + max );
  }
}      

Compile and run the program. Once you have it running see if you can "break" it by initializing the array to different values:

  • Put the largest element at the beginning.
  • Put the largest element at the end.
  • Put in more than one copy of the largest element.
  • Put in an extremely large element.
  • Make all elements the same.
  • Make all elements negative.
  • Make all elements zero.

Is the correct maximum found in each case? Sometimes a program works for the data a programmer was thinking about when the program was written, but not for all the kinds of data the program is used with.

QUESTION 12:

Here is an interesting situation: change the test part of the for to

index < array.length-1
  1. Will the program (with the changed loop) find the correct maximum of the data that is given in the initializer list?
  2. When will the program not work correctly?
  3. Is it obvious that there is a bug?