CSE142—Computer Programming I

Programming Assignment #3

Debugging Hints

Java Version

You can get a significant pixel difference if you are using an older version of Java.  In particular, you might see pixel differences for the strings that are drawn on the DrawingPanel if you are not using Java 8.  You can find out which version is running by going into the interactions pane in jGRASP and typing in the following (eclipse users can instead print this):

System.getProperty("java.version")

You should see a response like the following:

1.8.0_77

If it begins with “1.6” or “1.7”, then you are using an older version (Java 6 or Java 7).  To change which version of Java jGRASP is using, go to Settings, jGRASP Startup Settings, and look for “Java executable for running jGRASP.”  Pick something that begins with “1.8.”  If you don’t see something that begins with “1.8”, then you need to install a newer JDK first by following the instructions on the “Working at Home” tab on the class web page.

Drawing Counts

It is possible to get a large pixel difference if you draw the same line or string multiple times.  The DrawingPanel class has an option to help you explore this.  Set up your Graphics object this way:

Graphics g = p.getDebuggingGraphics();

When you do so, you can include the following line of code after you finish the drawing commands:

System.out.println(p.getCounts());

This is the output produced by the sample solution:

{drawLine=234, fillRect=234}

You do not have to match these counts if you are within 500 pixels of difference.  Be sure to remove any debugging printlns before you turn in your program.

Use the IPL Computers

There are many configuration issues that can lead to pixel differences when you run your program on your own computer and compare the result to the sample output.  We make sure that the computers at the IPL are properly configured to match our sample output, so you can always stop by the IPL and run your program on one of those computers to check whether a pixel difference is happening because of configuration issues.