mdinfotech.net  



Java

This is Java.

  • Programming Exercises
  • Regular 100/80/60 Quizzes
  • Short Answer Quizzes
  • Unit Exam
  • Game Project (15% of final mark)

Resources



  1. Write a while loop that prints 10 random numbers (all between 1 and 10).
  2. Modify the loop from question 1 so that if one of the random numbers is 5, it prints "You win" and ends the loop.
  3. Write a while loop that prints the digits -100 up to 100.
  4. Write a while loop that prints the digits 100 down to -100.
a) Monty Hall
  1. Watch The Monty Hall Problem.
  2. Watch Monty Hall's Denial of the problem.
  3. Download and play this working version of MontyHall.java
  4. Modify this game so that the user can play repeatedly in a single run of the program. Count the number of times the player wins, and print the percentage of wins at the end of the program.
b) Grade Average
  1. Write a program that reads any number of grades in numerical format, averages them, and then displays the average to the user. Use a while or do...while loop to enter grades and a sentinel variable to indicate when to stop entering grades. Allow the program user to determine when to stop entering the grades.
  1. Watch this video on the For Loop
  2. Read this Going Loopy Tutorial.
  3. Read this For Loop in Java.
  4. With a partner these exercises.
  5. If you have time in class, do exercise 6cd (below)
  1. With a partner, complete these Loops Exercises **on paper**.
  2. When you are done, confirm your answers by running the code.
c) A Single For Loop
  1. Write a program to find the sum of first 42 positive numbers using a for loop.
d) Nested For Loops: Stars Triangle
  1. Write and run a program that reads a positive integer n and then prints a triangle of asteriks in that number of rows. Use two nested for loops. For example, if n is 4, then the output would be:
    *
    **
    ***
    ****
    Hints to solve this algorithm:
    1) Print a single star using System.out.print("*").
    2) Get the program to print n stars on one line (a single for loop).
    3) Then get it to print an nxn square of stars (another for loop around the first for loop). Use System.out.println(""); to add a hard return where you need one.
    4) Now change only one thing in the program will give you the triangle you seek.

    NOTE: Solutions with two for loops that are not nested, or with only one for loop will not be accepted.
Write a program that
  1. Creates an array of 200 integers
  2. Loads the array with 200 random values between 1 and 100 (Hint: use a for loop)
  3. Prints the elements of the array in order from index 0 to index 199. (Hint: use another for loop)
  4. Prints the elements of the array in REVERSE order from index 199 to index 0. (Hint: use a 3rd for loop)
In class notes on 'pass by value' and 'pass reference by value'. Extra help: Pass-by-Value, Passing Arrays to Methods

In Class Exercise:
  1. Download this incomplete program.
  2. Complete the method absoluteValues() that replaces all the negative numbers in an array of integers with their absolute values.
  3. Complete the method indexOfMinimum() that returns the index of the minimum value stored in an array.
  1. Declare a 10x10 2D array of integers.
  2. Populate the array with random integers between (and including) 0 and 9.
  3. Call a method named print2DArray and pass it the above array. The method will print the array by line as shown below:
         1 2 3 4 0 9 4 3 2 6 
         4 3 2 1 5 3 4 2 0 9 
         5 6 7 8 5 3 7 5 8 1 
         8 7 6 5 0 8 9 5 7 3 
         5 6 7 8 5 3 7 5 8 1
         0 9 8 0 5 3 2 5 3 7
         4 3 2 1 5 3 4 2 0 9
         7 2 0 8 9 2 6 4 6 5
         1 0 7 9 3 5 7 4 6 3
         0 5 4 9 4 9 0 5 3 5
    	 
  4. Call a method named findSum and pass it the above array. The method will find the sum of the numbers in the array and print it.
  1. Download this text file of numbers. Save it in your java folder.
  2. Download File Input and Output Code. Save it in your java folder. Run the code. You should see the contents of nums.txt print to the console.
  3. Add code that prints the sum of all the numbers in the file to the screen.
Chars are a type of integer. Chars work with integer addition and comparisons.
          char initial = 'k';
          int numValue = (int)initial;
          System.out.println(initial + " has numerical value " + numValue);
          if (initial < 'a' || initial > 'z') {
              System.out.println("initial is not a letter");
          }
          
Assignment Description

The "Change One Letter" game has a 4 letter start word and a 4 letter goal word. The challenge is to get from the start word to the goal word by changing one letter per turn.

Sample Play
Start Word: wall
Goal Word: boil

wall
mall
mail
hail
tail
toil
boil
 

You are to write a program that allows two people to play the game until there is either a winner OR someone clicks cancel.

Each play of the game will have the following format:

  1. Player 1 enters a 4 letter start word, which must be validated against an English dictionary file then displayed in the console.
  2. Player 2 enters a 4 letter goal word, which must be validated against an English dictionary file.
  3. Player 1 changes a letter, it is validated, the new word is displayed in the console.
  4. Player 2 changes a letter, it is validated, the new word is displayed in the console.
  5. When the goal word is reached, display it in the console. Then display in the console the winner and the number of steps it took. Then the game ends.

To change a letter, the user must specify the position of one letter to change (0 for the first letter, 1 for the second letter etc), followed by a space, followed by a uppercase OR lowercase letter to change it to in order to make a new word. If the format of this input is not valid, display a descriptive error message and require the user to enter it again.

The format is considered invalid if:

  1. The number is not an integer between 0 and 3
  2. The letter is not a character between a and z
  3. There is not a space between the number and letter
  4. There is more than one space between the number and letter
  5. The new word created by the changed letter is not in the English dictionary
Sample InputOutput
wAlL
boil
0 m
2 i
0 H
0 t
1 o
0 B
wall
mall
mail
hail
tail
toil
boil
Player 2 wins in 6 steps.


Hints to Help You
  1. Put this four letter list in a file called dictionary.txt. Use this to determine if a word is a valid 4 letter word.
  2. Since you cannot change the individual characters of a String, but you can change the individual elements of an array, you will need to convert a String to a character array and convert the character array back to a String.
  3. To convert a String to a character array:
    String someString = "this is a string";
    char  someCharacterArray;
    
    someCharacterArray = someString.toCharArray();
                        
  4. To convert a character array to a String:
    someString = new String (someCharacterArray);
                    

Evaluation (/52)

  1. Commenting and Formatting (/10)
  2. Efficiency and Design (/5)
  3. 7 Working Test Cases (/21)
  4. 8 Non-working Test Cases (/16)

To hand in:

Put your dictionary and your java file into a folder titled Your Name and put the folder in Wear_IT > Hand-in > ICTP 11 > ChangeOneLetter. Also, print code and put in my wire in-basket on my desk.

The Assignment (15% of Semester Grade)


You and a partner will be assigned one of the following as your game project:
  1. Change One Letter - graphical version (Difficulty 4)
  2. Even and Odd (Difficulty 2) with NO Graphical Interface
  3. Bicentennial (Difficulty 2) with Dialog Box Interface: Create a computer game out of this old calculator game. There must be a 1 player game (against a computer) and a 2 player version. Algorithms, user interface and error checking evaluated.
  4. 1001 (Difficulty 1)

    Turn this old calculator/dice game into a computer game. Part of the design process is automating anything that can be programmed and making it fun for the user.

    1 Player, 1 Calculator, 1 Pair of Dice

    OBJECT: To get to 1001 as fast as possible.

    THE PLAY: Throw the dice and consult the following chart:
    1 = +
    2 = -
    3 = *
    4 = /
    5 = *
    6 = +
    One die will be used to determine the numbfer entry. The other will be used in conjunction with the chart to determine operation entry. For example, if the roll was 3 and 5, you could enter 3 as the number and enter * as the function. Or, you could enter 5 as the number and enter * as the function. You have to get EXACTLY to 1001 in the fewest number of turns. Each roll of the dice means you enter one number and one operation.

    STRATEGY: If the dice allow it, build up slowly so you will have some choice in later rolls. Take your time in deciding which number will be played and which number will determine the function. Try to plan for the best chances for the next roll. If you get it can serve to your advantage as it will get you to a number from which you will easily achieve 1001.

    SAMPLE PLAY
    Roll, Chosen Play ; (Result)
    Roll 1 6, 1 6 +
    Roll 2 5, 3 5 * ( 11 *)
    Roll 3 1, 4 4 + ( 4 4 + )
    Roll 4 1, 1 1 + ( 4 5 + )
    Roll 5 4, 2 4 - 4 9 - )
    Roll 6 1, 4 4 + ( 4 5 + )
    Roll 7 1, 4 4 + ( 4 9 + )
    Roll 8 3, 6 6 * ( 55 *)
    Roll 9 6, 5 6 * ( 330 *)
    Roll 10 3, 1 3 + ( 990 + )
    Roll 11 6, 6 6 + ( 996 + )
    Roll 12 1, 5 5 + (1001 )

Evaluation (/80)

Milestone 1 Demonstration (/10) (Thursday Nov 27)
Demonstration in class to teacher: Working game with human or computer players. Can win or lose.
1001 must
  1. Instructions display at game start
  2. die roll results displayed
  3. total updates correctly
  4. the game ends on the correct condition
  5. At game end the number of turns is displayed

Milestone 2 Demonstration (/10) (Tuesday Dec 3)
Demonstration in class to teacher: Working game with human AND computer players. Can win or lose. Winner is identified.
1001 must show number of turns taken is displayed.

Final Project Due Friday Dec 6
All error checking works. It rocks. No bugs. No issues. Awesome graphics and interface. No bugs. Instructions.

Evaluation of Running Game
  • Change One Letter and Even/Odd (/40)
  • 1001 (/30)
I will mark your game on the following properties:
  1. Visual Appearance
  2. Clarity of Instructions
  3. Usability
  4. Robustness
  5. Completeness
  6. Error Checking
  7. Overall Impression
Enhancement: 1001 ONLY (/10)

Make a **teacher approved** enhancement or variation to the initial game which you believe improves the game experience for the player. Enhancements could be a variation to the rules of the game, some modification that appears within the game, or anything else which maintains the basic concept of the game but deals with an issue you may have with the basic game.

Code (/20)
I will mark the code on commenting/formatting (/10) and efficiency/design (/10).

To hand in tba

  1. put all the code/images in a folder titled the names of your team
  2. hand into Wear_IT > Hand-in > CompSci 11 > Java Game
  3. print your code and hand it in to the wire inbox on my desk, yes, your code
Worth 10% of FINAL MARK.

39 Multiple Choice Questions

Focuses on material and algorithms from this unit
  • Loops Exercises
  • Methods
  • Arrays (1d and 2d)
  • File I/O
  • Pass-by-Value vs Pass-by-Reference -Value
  • Nested for loops (stars program)
  • Array manipulation
  • Sum a number of values (Grades Average)
  • Sentinel Value (Grades Average)
  • Chars and the Ascii Table (Change 1 Letter)
  • Character Arrays (Change 1 Letter)
Music.java plays musical scales.
Examine and run this code: