|
What are the goals of this assignment? To write several small Java programs so that you get accustomed to: declaring and initializing variables, using expressions, using conditionals and loops, arrays, and debugging your code.
What preparation do I need before beginning this assignment? Read Sections 1.2 and 1.3 of the textbook. Read Sections 1.3 and 1.4 of the textbook. You may also find it instructive to work through some of the other exercises and look at the solutions on the booksite afterwards.
How should I format my Java code? How much do I need to comment my code? Follow the style guidelines. Don't forget to put your name, login and precept in the header of every file, as well as a brief description (and/or example run) of each program.
I have the constants 6, 10, 51, 60, and 61 sprinkled through my TenDice program. Is there a better way? Yes, give your constants meaningful symbolic names, such as SIDES or NUMBER_OF_DICE. This will make your code easier to read, maintain, and debug. Beginning on this assignment, you will lose points for not doing so.
What does this error mean?
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at TenDice.main(TenDice.java:6)
This means that you are trying to access an element in the array that doesn't exist.
The number at the end of the first line is the index into the array.
When the number is 0, it is possible the error refers to args[0]. Since that doesn't have a value, you probably aren't passing in any command line arguments to your program even though your program expects it.
Use the index number and the line number, in this case, 6, to determine what is wrong with your code.
Do I have to use command-line arguments to read the inputs? Yes, or you will lose a substantial number of points.
My output from RGBtoCMYK
is almost the same as the sample on the assignment page.
Only the last digit or two is different. Why is there this tiny discrepancy, and is my answer wrong?
Computers work with limited precision, and so different algebraically equivalent solutions can give slightly different answers. In grading we ignore such tiny discrepancies (except for certain assignments later where we explicitly tell you otherwise).
|
Submission. When you submit, be sure to click the Check All Submitted Files button. Make sure that you submitted the right files and that they compile cleanly. You may resubmit a file after making corrections. The newly submitted file will overwrite the old one.
Testing and Debugging |
Here are our results for sample runs of Time.
% java Time 725 Start time: 12:00pm End time: 12:05am % java Time 1420 Start time: 12:00pm End time: 11:40am
Possible Progress Steps |
These are purely suggestions for how you might make progress. You do not have to follow these steps. The key to writing correct programs is to develop them incrementally, testing after each step.
Time.java program.
What variables do you need? You certainly need to input the number of minutes that have elapsed. What else would be useful? Starting hour? Ending hour? Starting minute? Ending minute?
How will you compute the number of full hours? How will you translate that to an appropriate ending time? How will you compute the number of minutes left over? (Hint: Integer division and remainder may be useful.)
Finally, how will you determine whether to print "am" or "pm" after the end time?
A drunkard's walk. This is similar in many ways to the gambler's ruin example from lecture and the textbook. The key to building a larger program is developing it incrementally.
Dice and the Gaussian distribution.
|
Needless to say, you should continue to follow the guidelines from earlier in the course. Here are some new conventions to keep in mind.
if (condition == true)
should usually be written as if (condition)
if (x>y) { if (y>x)...
is badly written since the inner condition can never be true.
|
Here are some famous and not-so-famous quotations about learning to program.