04 Slide
04 Slide
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
1
Motivations
Suppose you need to estimate the area enclosed by four
cities, given the GPS locations (latitude and longitude) of
these cities, as shown in the following diagram. How
would you write a program to solve this problem? You will
be able to write such a program after completing this
chapter.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
2
Outline
• Mathematical Functions
• Character Data Type
• String Type
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
3
Mathematical Functions
Java provides many useful methods in the Math
class for performing common mathematical
functions.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
4
The Math Class
Class constants:
– PI
–E
Class methods:
– Trigonometric Methods
– Exponent Methods
– Rounding Methods
– min, max, abs, and random Methods
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
5
Trigonometric Methods
• sin(double radians)
– Returns the trigonometric sine of an angle in radians.
• cos(double radians)
– Returns the trigonometric cosine of an angle in radians.
• tan(double radians)
– Returns the trigonometric tangent of an angle in radians.
• toRadians(degree)
– Returns the angle in radians for the angle in degree.
• toDegree(radians)
– Returns the angle in degrees for the angle in radians.
• acos(double a)
– Returns the angle in radians for the inverse of cosine
• asin(double a)
– Returns the angle in radians for the inverse of sine.
• atan(double a)
– Returns the angle in radians for the inverse of tangent
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
6
Trigonometric Methods
Examples:
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
7
Exponent Methods
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
8
Exponent Methods
Examples:
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
9
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).
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
10
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.round(2.6f) returns 3
Math.round(2.0) returns 2
Math.round(-2.0f) returns -2
Math.round(-2.6) returns -3
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
11
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 3.0
parameter. Math.min(2.5, 3.6)
random() returns 2.5
Returns a random double value Math.abs(-2) returns 2
in the range [0.0, 1.0). Math.abs(-2.1) returns
2.1
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
12
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,
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
13
Case Study: Computing Angles
of a Triangle
x2, y2
A = acos((a * a - b * b - c * c) / (-2 * b * c))
a B = acos((b * b - a * a - c * c) / (-2 * a * c))
B
c C = acos((c * c - b * b - a * a) / (-2 * a * b))
C
A x3, y3
b
x1, y1
ComputeAngles
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
14
Character Data Type
Four hexadecimal digits.
char letter = 'A'; (ASCII)
char numChar = '4'; (ASCII)
char letter = '\u0041'; (Unicode)
char numChar = '\u0034'; (Unicode)
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
16
Unicode Format
Java characters use Unicode, a 16-bit encoding scheme
established by the Unicode Consortium to support the
interchange, processing, and display of written texts in the
world’s diverse languages. Unicode takes two bytes,
preceded by \u, expressed in four hexadecimal numbers
that run from '\u0000' to '\uFFFF'. So, Unicode can
represent 65535 + 1 characters.
Unicode \u03b1 \u03b2 \u03b3 for three Greek
letters
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
17
Note: Hexadecimal Numbers
A Hexadecimal number is
based on the number 16
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
18
ASCII Code for Commonly Used
Characters
Characters Code Value in Decimal Unicode Value
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
19
Appendix B: ASCII Character Set
ASCII Character Set is a subset of the Unicode from \u0000 to \u007f
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
20
ASCII Character Set, cont.
ASCII Character Set is a subset of the Unicode from \u0000 to \u007f
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
21
Escape Sequences for Special Characters
Java uses a special notation to represent special characters.
This special notation, called an escape sequence, consists of a
backslash (\) followed by a character or a combination of
digits.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
22
Escape Sequences for Special
Characters (cont.)
System.out.println("He said \"Java is fun\"");
displays
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
23
Escape Character
The backslash \ is called an escape character. It is a
special character . To display this character, you
have to use an escape sequence \\.
displays
\t is a tab character
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
24
Casting between char and
Numeric Types
int i = 'a'; // Same as int i = (int)'a';
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
25
Casting between char and
Numeric Types
All numeric operators can be applied to char operands
int i = '2' + '3'; // (int)'2' is 50 and (int)'3' is 51
System.out.println("i is "+ i); // i is 101
display
i is 101
j is 99
99 is the Unicode for character c
Chapter 2
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
26
Comparing and Testing
Characters
if (ch >= 'A' && ch <= 'Z')
System.out.println(ch + " is an uppercase letter");
else if (ch >= 'a' && ch <= 'z')
System.out.println(ch + " is a lowercase letter");
else if (ch >= '0' && ch <= '9')
System.out.println(ch + " is a numeric character");
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
27
Methods in the Character Class
Method Description
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
28
Methods in the Character Class
cont.
System.out.println("isDigit('a') is "+ Character.isDigit('a'));
System.out.println("isLetter('a') is "+ Character.isLetter('a'));
System.out.println("isLowerCase('a') is "+ Character.isLowerCase('a'));
System.out.println("isUpperCase('a') is "+ Character.isUpperCase('a'));
System.out.println("toLowerCase('T') is "+ Character.toLowerCase('T'));
System.out.println("toUpperCase('q') is "+ Character.toUpperCase('q'));
displays
isDigit('a') is false
isLetter('a') is true
isLowerCase('a') is true
isUpperCase('a') is false
toLowerCase('T') is t
toUpperCase('q') is Q
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
29
The String Type
The char type only represents one character. To represent a string
of characters, use the data type called String.
For example,
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
30
The String Type (cont.)
• String is actually a predefined class in the Java library just like the
System class and Scanner class.
• For the time being, you just need to know how to declare a String
variable, how to assign a string to the variable, how to concatenate
strings, and to perform simple operations for strings.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
31
Simple Methods for String Objects
Method Description
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
32
Simple Methods for String Objects
• Strings are objects in Java.
• The methods in the preceding table can only be invoked
from a specific string instance.
• For this reason, these methods are called instance methods.
• A non-instance method is called a static method.
• A static method can be invoked without using an object.
• All the methods defined in the Math class are static
methods. They are not tied to a specific object instance.
• The syntax to invoke an instance method is
referenceVariable.methodName(arguments).
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
33
Getting String Length
String message = "Welcome to Java";
System.out.println("The length of " + message + " is "
+ message.length());
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
34
Getting Characters from a String
The s.charAt(index) method can be used to retrieve a specific character in a
string s, where the index is between 0 and s.length()–1.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
35
String Concatenation
You can use the concat method to concatenate two strings.
String s3 = s1.concat(s2);
String s3 = s1 + s2;
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
36
String Concatenation (cont.)
The augmented += operator can also be used
for string concatenation.
For example, the following code appends the
string "and Java is fun" with the string
"Welcome to Java" in message.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
37
Converting Strings
"Welcome".toLowerCase() returns a new string, welcome.
"Welcome".toUpperCase() returns a new string,
WELCOME.
" Welcome ".trim() returns a new string, Welcome.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
38
Reading a String from the Console
To read a string from the console, invoke the next() method on a Scanner object.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
39
Reading a String from the Console (cont.)
The next() method reads a string that ends with a whitespace character.
You can use the nextLine() method to read an entire line of text.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
40
Important Caution
To avoid input errors, do not use nextLine()
after nextByte(), nextShort(),
nextInt(), nextLong(), nextFloat(),
nextDouble(), or next().
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
41
Reading a Character from the Console
To read a character from the console, use the nextLine() method to read
a string and then invoke the charAt(0) method on the string to return a
character.
For example,
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
42
Comparing Strings
Method Description
OrderTwoCities
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
43
Comparing Strings (cont.)
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
44
Comparing Strings (cont.)
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
45
Obtaining Substrings
Method Description
substring(beginIndex) Returns this string’s substring that begins with the character at the specified
beginIndex and extends to the end of the string, as shown in Figure 4.2.
substring(beginIndex, Returns this string’s substring that begins at the specified beginIndex and
endIndex) extends to the character at index endIndex – 1, as shown in Figure 9.6.
Note that the character at endIndex is not part of the substring.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
46
Finding a Character or a Substring
in a String
Method Description
indexOf(ch) Returns the index of the first occurrence of ch in the string. Returns -1 if not
matched.
indexOf(ch, fromIndex) Returns the index of the first occurrence of ch after fromIndex in the string.
Returns -1 if not matched.
indexOf(s) Returns the index of the first occurrence of string s in this string. Returns -1 if
not matched.
indexOf(s, fromIndex) Returns the index of the first occurrence of string s in this string after
fromIndex. Returns -1 if not matched.
lastIndexOf(ch) Returns the index of the last occurrence of ch in the string. Returns -1 if not
matched.
lastIndexOf(ch, Returns the index of the last occurrence of ch before fromIndex in this
fromIndex) string. Returns -1 if not matched.
lastIndexOf(s) Returns the index of the last occurrence of string s. Returns -1 if not matched.
lastIndexOf(s, Returns the index of the last occurrence of string s before fromIndex.
fromIndex) Returns -1 if not matched.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
47
Finding a Character or a Substring in a String
Suppose a string s contains the first name and last name separated by a space.
You can use the following code to extract the first name and last name from the string:
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
48
Conversion between Strings and
Numbers
int intValue = Integer.parseInt(intString);
double doubleValue = Double.parseDouble(doubleString);
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
49
Case Study: Converting a
Hexadecimal Digit to a Decimal Value
Write a program that converts a hexadecimal digit
into a decimal value.
HexDigit2Dec
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
50
Case Study: Revising the
Lottery Program Using Strings
A problem can be solved using many different approaches.
This section rewrites the lottery program in Listing 3.7
using strings. Using strings simplifies this program.
LotteryUsingStrings
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
51
Formatting Output
Use the printf statement.
System.out.printf(format, items);
Where format is a string that may consist of substrings and
format specifiers. A format specifier specifies how an item
should be displayed. An item may be a numeric value,
character, boolean value, or a string. Each specifier begins
with a percent sign.
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
52
Frequently-Used Specifiers
Specifier Output Example
%b a boolean value true or false
%c a character 'a'
%d a decimal integer 200
%f a floating-point number 45.460000
%e a number in standard scientific notation 4.556000e+01
%s a string "Java is cool"
int count = 5;
items
double amount = 45.56;
System.out.printf("count is %d and amount is %f", count, amount);
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
54
FormatDemo
FormatDemo
Liang, Introduction to Java Programming and Data Structures, Twelfth Edition, Global Edition,
Copyright © 2022 Pearson Education Ltd. All rights reserved.
55