CSE215 A6 Methods
CSE215 A6 Methods
1
Problem
int sum = 0;
for (int i = 1; i <= 10; i++)
sum += i;
System.out.println("Sum from 1 to 10 is " + sum);
sum = 0;
for (int i = 20; i <= 30; i++)
sum += i;
System.out.println("Sum from 20 to 30 is " + sum);
sum = 0;
for (int i = 35; i <= 45; i++)
sum += i;
System.out.println("Sum from 35 to 45 is " + sum);
2
Problem
int sum = 0;
for (int i = 1; i <= 10; i++)
sum += i;
System.out.println("Sum from 1 to 10 is " + sum);
sum = 0;
for (int i = 20; i <= 30; i++)
sum += i;
System.out.println("Sum from 20 to 30 is " + sum);
sum = 0;
for (int i = 35; i <= 45; i++)
sum += i;
System.out.println("Sum from 35 to 45 is " + sum);
3
Solution
public static int sum(int i1, int i2) {
int sum = 0;
for (int i = i1; i <= i2; i++)
sum += i;
return sum;
}
5
Method Signature
6
Formal Parameters
7
Actual Parameters
8
Return Value Type
A method may return a value. The returnValueType is the data type
of the value the method returns. If the method does not return a
value, the returnValueType is the keyword void. For example, the
returnValueType in the main method is void.
Define a method Invoke a method
9
animation
Calling Methods
10
animation
Trace Method Invocation
i is now 5
11
animation
Trace Method Invocation
j is now 2
12
animation
Trace Method Invocation
invoke max(i, j)
13
animation
Trace Method Invocation
invoke max(i, j)
Pass the value of i to num1
Pass the value of j to num2
14
animation
Trace Method Invocation
declare variable result
15
animation
Trace Method Invocation
(num1 > num2) is true since num1
is 5 and num2 is 2
16
animation
Trace Method Invocation
result is now 5
17
animation
Trace Method Invocation
return result, which is 5
18
animation
Trace Method Invocation
return max(i, j) and assign the
return value to k
19
animation
Trace Method Invocation
Execute the print statement
20
CAUTION
A return statement is required for a value-returning method. The
method shown below in (a) is logically correct, but it has a
compilation error because the Java compiler thinks it possible that
this method does not return any value.
To fix this problem, delete if (n < 0) in (a), so that the compiler will
see a return statement to be reached regardless of how the if
statement is evaluated.
21
Reuse Methods from Other Classes
22
Passing Parameters
public static void nPrintln(String message, int n) {
for (int i = 0; i < n; i++)
System.out.println(message);
}
23
Modularizing Code
Methods can be used to reduce redundant coding and enable code reuse.
Methods can also be used to modularize code and improve the quality of the
program.
24
Passing Arrays to Methods
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
Anonymous array
25
Anonymous Array
The statement
printArray(new int[]{3, 1, 2, 6, 4, 2});
creates an array using the following syntax:
new dataType[]{literal0, literal1, ..., literalk};
There is no explicit reference variable for the array.
Such array is called an anonymous array.
26
Pass By Value
Java uses pass by value to pass arguments to a method. There
are important differences between passing a value of variables
of primitive data types and passing arrays.
28
Passing Tow-Dimensional Arrays to Methods
29
Overloading Methods
30
Ambiguous Invocation
31
Ambiguous Invocation
public class AmbiguousOverloading {
public static void main(String[] args) {
System.out.println(max(1, 2));
}
32
Problem: Converting Decimals to Hexadecimals
36
Scope of Local Variables, cont.
A variable declared in the initial action part of a for loop
header has its scope in the entire loop. But a variable
declared inside a for loop body has its scope limited in the
loop body from its declaration and to the end of the block
that contains the variable.
37
Scope of Local Variables, cont.
38
Scope of Local Variables, cont.
// Fine with no errors
public static void correctMethod() {
int x = 1;
int y = 1;
// i is declared
for (int i = 1; i < 10; i++) {
x += i;
}
// i is declared again
for (int i = 1; i < 10; i++) {
y += i;
}
}
39
Scope of Local Variables, cont.
// With errors
public static void incorrectMethod() {
int x = 1;
int y = 1;
for (int i = 1; i < 10; i++) {
int x = 0; // error ...
x += i;
}
}
40
Method Abstraction
You can think of the method body as a black box that contains the detailed
implementation for the method.
Method Header
Black Box
Method body
41
Benefits of Methods
Finish!
42
The Math Class
• Class constants:
• PI
• E
• Class methods:
• Trigonometric Methods
• Exponent Methods
• Rounding Methods
• min, max, abs, and random Methods
43
Trigonometric Methods
• sin(double a) Examples:
• cos(double a)
Math.sin(0) returns 0.0
• tan(double a) Math.sin(Math.PI / 6)
• acos(double a) returns 0.5
Math.sin(Math.PI / 2)
• asin(double a) returns 1.0
• atan(double a) Math.cos(0) returns 1.0
Math.cos(Math.PI / 6)
returns 0.866
Math.cos(Math.PI / 2)
Radians returns 0
toRadians(90)
44
Exponent Methods
• exp(double a) Examples:
Returns e raised to the power of a.
• log(double a) Math.exp(1) returns 2.71
Returns the natural logarithm of a. Math.log(2.71) returns 1.0
Math.pow(2, 3) returns 8.0
• log10(double a)
Math.pow(3, 2) returns 9.0
Returns the 10-based logarithm of
a. Math.pow(3.5, 2.5) returns
22.91765
• pow(double a, double b) Math.sqrt(4) returns 2.0
Returns a raised to the power of b. Math.sqrt(10.5) returns 3.24
• sqrt(double a)
Returns the square root of a.
45
Rounding Methods
• double ceil(double x)
x rounded up to its nearest integer. This integer is returned as a
double value.
• double floor(double x)
x is rounded down to its nearest integer. This integer is returned as a
double value.
• double rint(double x)
x is rounded to its nearest integer. If x is equally close to two integers,
the even one is returned as a double.
• int round(float x)
Return (int)Math.floor(x+0.5).
• long round(double x)
Return (long)Math.floor(x+0.5).
46
Rounding Methods Examples
Math.ceil(2.1) returns 3.0
Math.ceil(2.0) returns 2.0
Math.ceil(-2.0) returns –2.0
Math.ceil(-2.1) returns -2.0
Math.floor(2.1) returns 2.0
Math.floor(2.0) returns 2.0
Math.floor(-2.0) returns –2.0
Math.floor(-2.1) returns -3.0
Math.rint(2.1) returns 2.0
Math.rint(2.0) returns 2.0
Math.rint(-2.0) returns –2.0
Math.rint(-2.1) returns -2.0
Math.rint(2.5) returns 2.0
Math.rint(-2.5) returns -2.0
Math.round(2.6f) returns 3
Math.round(2.0) returns 2
Math.round(-2.0f) returns -2
Math.round(-2.6) returns -3
47
min, max, and abs
• max(a, b)and min(a, b) Examples:
Returns the maximum or
minimum of two parameters.
Math.max(2, 3) returns 3
• abs(a)
Math.max(2.5, 3) returns
Returns the absolute value of the
parameter. 3.0
Math.min(2.5, 3.6)
• random()
returns 2.5
Returns a random double value
in the range [0.0, 1.0). Math.abs(-2) returns 2
Math.abs(-2.1) returns
2.1
48
The random Method
Generates a random double value greater than or equal to 0.0 and
less than 1.0 (0 <= Math.random() < 1.0).
Examples:
In general,
49
Case Study: Generating Random Characters
As discussed in Chapter 2., all numeric operators can be applied to the char
operands. The char operand is cast into a number if the other operand is a
number or a character. So, the preceding expression can be simplified as
follows:
'a' + Math.random() * ('z' - 'a' + 1)
50