Homework
1 How do you simplify the max method in the following, using the conditional operator?
1: /** Return the max of two numbers */
2: public static int max ( int num1, int num2 ) {
3: int result;
4:
5: if ( num1 > num2 )
6: result = num1;
7: else
8: result = num2;
9: return result;
10: }
2 Write method headers (just the declaration, not the bodies) for the following methods:
Compute a sales commission, given the sales amount and the commission rate.
Display the calendar for a month, given the month and year.
Compute a square root of a number.
Test whether a number is even, and returning true if it is.
Display a message a specified number of times.
Compute the monthly payment, given the loan amount, number of years, and annual interest rate.
Find the corresponding uppercase letter, given a lowercase letter.
3 Identify and correct the errors in the following program:
1: public class Test {
2: public static method1(int n, m) {
3: n += m;
4: method2 (3. 4);
5: }
6:
7: public static int method2(int n) {
8: if ( n > 0 ) return 1;
9: else if (n == 0) return 0;
10: else if (n < 0) return -1;
11: }
12: }
4 What is pass-by-value? Show the results of the following two programs.
1: public class Test {
2: public static void main ( String [] args ) {
3: int max = 0;
4: max(1, 2, max);
5: System.out.println(max);
6: }
7:
8: public static void max ( int value1, int value2, int max ) {
9: if ( value1 > value2 )
10: max = value1;
11: else
12: max = value2;
13: }
14: }
1: public class Test {
2: public static void main ( String [] args ) {
3: int i = 1;
4: while ( i <= 6 ) {
5: method1( i, 2 );
6: i++;
7: }
8: }
9:
10: public static void method1 ( int i, int num ) {
11: for ( int j = 1; j <= i; j++ ) {
12: System.out.print( num + ” ” );
13: num *= 2;
14: }
15: System.out.println();
16: }
17: }
5 What is wrong with the following program?
1: public class Test {
2: public static void method ( int x ) {
3: }
4: public static int method ( int y ) {
5: return y;
6: }
7: }
6 Write an expression that obtains a random integer between 34 and 55, inclusive.
Write an expression that obtains a random integer between 0 and 999, inclusive.
Write an expression that obtains a random number between 5.5 and 55.5, inclusive.
Write an expression that obtains a random lowercase (English) letter.
7 How many times is the factorial method in the following invoked, for the call factorial(6)?
1: import java.util.Scanner;
2:
3: public class ComputeFactorial {
4: public static void main ( String [] args ) {
5: Scanner input = new Scanner( System.in );
6: System.out.print( “Enter a nonnegative integer: ” );
7: int n = input.nextInt();
8:
9: // Display factorial
10: System.out.println( “Factorial of ” + n + ” is ” + factorial(n) );
11: }
12:
13: /** Return the factorial for the specified number */
14: public static long factorial ( int n ) {
15: if ( n == 0 ) // Base case
16: return 1;
17: else
18: return n * factorial( n – 1 ); // Recursive call
19: }
20: }
8 Suppose that the class F is defined as shown below. Let f be an instance of F. Which of the following statements are syntactically correct?
1: public class F {
2: int i;
3: static String s;
4: void iMethod () {
5: }
6: static void sMethod () {
7: }
8: }
System.out.println(f.i);
System.out.println(f.s);
f.iMethod();
f.sMethod();
System.out.println(F.i);
System.out.println(F.s);
F.iMethod();
F.sMethod();
9 Add the static keyword in the place of ?, if appropriate, in the code below.
1: public class Test {
2: private int count;
3: public ? void main ( String [] args ) {
4: …
5: }
6: public ? int getCount () {
7: return count;
8: }
9: public ? int factorial ( int n ) {
10: int result = 1;
11: for ( int i = 1; i <= n; i++ )
12: result *= i;
13: return result;
14: }
15: }
10 Can each of the following statements be compiled?
Integer i = new Integer(“23”);
Integer i = new Integer(23);
Integer i = Integer.valueOf(“23”);
Integer i = Integer.parseInt(“23”, 8);
Double d = new Double();
Double d = Double.valueOf(“23.45”);
int i = (Integer.valueOf(“23”)).intValue();
double d = (Double.valueOf(“23.4”)).doubleValue();
int i = (Double.valueOf(“23.4”)).intValue();
String s = (Double.valueOf(“23.4”)).toString();
11 How do you convert an integer into a string?
How do you convert a numeric string into an integer?
How do you convert a double number into a string?
How do you convert a numeric string into a double value?
12 What is NullPointerException?
13 Which of the following statements (if any) will throw an exception? If no exception is thrown, what is the output?
1: System.out.println( 1 / 0 );
2: System.out.println( 1.0 / 0 );
14 Point out the problem in the following code. Does the code throw any exceptions?
1: long value = Long.MAX_VALUE + 1;
2: System.out.println( value );
15 What is a checked exception, and what is an unchecked exception?
Project
For this project you are to implement a stand-alone Java program to play a guessing game. Your program should pick a random number between one and ten (inclusive) and prompt the user for their guess. For each guess made, your program should tell the user if the guess was too high, too low, or correct. The user should only have four (4) tries to get it right before they lose the game.
When a game is over, a dialog should announce if they won or lost and ask the user if they want to play again. Your dialog should have yes and no buttons. If they lost this dialog box must show them what the correct answer was.
All user input and output should be done using javax.swing.JOptionPane class, which display dialog boxes. Other than this, the program is non-GUI.
Your project must be a stand-alone program, not an applet
The program should use the class java.util.Random to generate the numbers (which is easier than using java.lang.Math random number functions), and use the swing JOptionPane input dialog to read in the user’s guess, and a message dialog for the game over dialog. The user is told if the guess is too low or too high, or if they got the right answer. If the user doesn’t guess correctly with four tries, they lose.
As this is your first programming assignment where I don’t provide sample code to use, I provide the design of the program for you. Your code must have the following methods at least:
public static void main ( String [] args )
This method is responsible for the “Play again?” logic, including the you won/you lost dialog. This means a loop that runs at least once, and continues until the player quits.
static boolean playGame ( ??? )
This method is responsible for playing one complete game each time it is called, including the what is your guess? input dialog. Note the message displayed in the input dialog changes each time through the loop, to show if the user’s last guess was too high or too low. The method should return true if the user won. If they don’t guess correctly after four tries, the user has lost and the method should return false.
static int compareTo ( ???, ??? )
This method compares the user input (a single guess) with the correct answer. It returns a negative integer if the guess is too low, a positive integer if the guess is too high, and 0 (zero) if the guess is correct.
No other methods are needed, but if you can make a good case for it you may have additional methods. (You still need these three methods.) You must decide what arguments, if any, to pass to these methods. Please note you must use the design implied by the methods I have required. (Even if you would have designed the game program differently!)