# COP 2800 (Java Programming I) Homework Assignment #3

## Description:

Answer the following questions as briefly (but completely) as possible:

1. How do you simplify the `max` method in the following, using the conditional operator?
```    /** Return the max of two numbers */
public static int max ( int num1, int num2 ) {
int result;

if ( num1 > num2 )
result = num1;
else
result = num2;
return result;
}```
2. Write method headers (just the declaration, not the bodies) for the following methods:
1. Compute a sales commission, given the sales amount and the commission rate.
2. Display the calendar for a month, given the month and year.
3. Compute a square root of a number.
4. Test whether a number is even, and returning true if it is.
5. Display a message a specified number of times.
6. Compute the monthly payment, given the loan amount, number of years, and annual interest rate.
7. Find the corresponding uppercase letter, given a lowercase letter.
3. Identify and correct the errors in the following program:
```public class Test {
public static method1(int n, m) {
n += m;
method2 (3. 4);
}

public static int method2(int n) {
if ( n > 0 ) return 1;
else if (n == 0) return 0;
else if (n < 0) return -1;
}
}```
4. What is pass-by-value?  Show the results of the following two programs.
1. ```public class Test {
public static void main ( String [] args ) {
int max = 0;
max(1, 2, max);
System.out.println(max);
}

public static void max ( int value1, int value2, int max ) {
if ( value1 > value2 )
max = value1;
else
max = value2;
}
}```
2. ```public class Test {
public static void main ( String [] args ) {
int i = 1;
while ( i <= 6 ) {
method1( i, 2 );
i++;
}
}

public static void method1 ( int i, int num ) {
for ( int j = 1; j <= i; j++ ) {
System.out.print( num + " " );
num *= 2;
}
System.out.println();
}
}```
5. What is wrong with the following class?
```public class Test {
public static void method ( int x ) {
}
public static int method ( int y ) {
return y;
}
}```
1. Write an expression that obtains a random integer between 34 and 55, inclusive.
2. Write an expression that obtains a random integer between 0 and 999, inclusive.
3. Write an expression that obtains a random number between 5.5 (inclusive) and 55.5 (exclusive).
4. Write an expression that obtains a random lowercase (English) letter.
6. How many times is the `factorial` method in the following invoked, for the call `factorial(6)`?
```import java.util.Scanner;

public class ComputeFactorial {
public static void main ( String [] args ) {
Scanner input = new Scanner( System.in );
System.out.print( "Enter a nonnegative integer: " );
int n = input.nextInt();

// Display factorial
System.out.println( "Factorial of " + n + " is " + factorial(n) );
}

/** Return the factorial for the specified number */
public static long factorial ( int n ) {
if ( n == 0 ) // Base case
return 1;
else
return n * factorial( n - 1 ); // Recursive call
}
}```
7. 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?
```public class F {
int i;
static String s;
void iMethod () {
}
static void sMethod () {
}
}```
1. `System.out.println(f.i);`
2. `System.out.println(f.s);`
3. `f.iMethod();`
4. `f.sMethod();`
5. `System.out.println(F.i);`
6. `System.out.println(F.s);`
7. `F.iMethod();`
8. `F.sMethod();`
8. Add the `static` keyword in the place of `?`, if appropriate, in the code below.
```public class Test {
private int count;
public `?` void main ( String [] args ) {
...
}
public `?` int getCount () {
return count;
}
public `?` int factorial ( int n ) {
int result = 1;
for ( int i = 1; i <= n; i++ )
result *= i;
return result;
}
}```
9. Can each of the following statements be compiled?
1. `Integer i = new Integer("23");`
2. `Integer i = new Integer(23);`
3. `Integer i = Integer.valueOf("23");`
4. `Integer i = Integer.parseInt("23", 8);`
5. `Double d = new Double();`
6. `Double d = Double.valueOf("23.45");`
7. `int i = (Integer.valueOf("23")).intValue();`
8. `double d = (Double.valueOf("23.4")).doubleValue();`
9. `int i = (Double.valueOf("23.4")).intValue();`
10. `String s = (Double.valueOf("23.4")).toString();`
1. How do you convert an integer into a string?
2. How do you convert a numeric string into an integer?
3. How do you convert a double number into a string?
4. How do you convert a numeric string into a double value?

## To be turned in:

Email your homework assignment, by copy-and-paste (no attachments please), to (homework submission).  If possible use the “text” and not the “HTML” mode of your email program.  Please use the subject similar to “Java Programming I Homework Assignment #3 Submission”, so I can tell which emails are submitted homework assignments.

Homework assignments will not be returned.  Please do not send as attachments.  Refer to the Homework and the Submitting Assignments sections of your syllabus for more information.

Confused?  Send questions about the homework assignment to (homework questions).  Please use a subject similar to “Java Programming I Homework Assignment #3 Questions” so I can tell which emails are questions about assignment quiz (and not submissions).