90
Module 4: Characters, Strings, and Mathematical Functions

Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

  • Upload
    hakien

  • View
    220

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4:

Characters, Strings, and

Mathematical Functions

Page 2: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 2© Dr Jonathan Cazalas

Objectives To solve mathematics problems by using the methods in the Math class (§4.2).

To represent characters using the char type (§4.3).

To encode characters using ASCII and Unicode (§4.3.1).

To represent special characters using the escape sequences (§4.4.2).

To cast a numeric value to a character and cast a character to an integer (§4.3.3).

To compare and test characters using the static methods in the Character class (§4.3.4).

To introduce objects and instance methods (§4.4).

To represent strings using the String objects (§4.4).

To return the string length using the length() method (§4.4.1).

To return a character in the string using the charAt(i) method (§4.4.2).

To use the + operator to concatenate strings (§4.4.3).

To read strings from the console (§4.4.4).

To read a character from the console (§4.4.5).

To compare strings using the equals method and the compareTo methods (§4.4.6).

To obtain substrings (§4.4.7).

To find a character or a substring in a string using the indexOf method (§4.4.8).

To program using characters and strings (GuessBirthday) (§4.5.1).

To convert a hexadecimal character to a decimal value (HexDigit2Dec) (§4.5.2).

To revise the lottery program using strings (LotteryUsingStrings) (§4.5.3).

To format output using the System.out.printf method (§4.6).

Page 3: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 3© Dr Jonathan Cazalas

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 module.

Page 4: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 4© Dr Jonathan Cazalas

Motivations

Summary:

– This module introduced additional basic features of

Java

These features include Strings, Characters, and additional

Mathematical Functions

Mathematical Functions

– Java provides many useful methods in the Math

class for performing common mathematical

functions.

Page 5: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 5© Dr Jonathan Cazalas

Common Mathematical Functions

Method:

– A group of statements that performs a specific task

– You have already seen several methods:

pow(a, b): to compute ab

random(): generate a random number

– Both of these methods are inside the Math class

– There are many other beneficial methods inside the

Math class as well

Page 6: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 6© Dr Jonathan Cazalas

The Math Class

Class constants:

– PI

– E

Class methods can be categorized as:

– Trigonometric Methods

– Exponent Methods

– Service methods

rounding, min, max, abs, and random Methods

You can use these constants as Math.PI and Math.E in any program.

Page 7: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 7© Dr Jonathan Cazalas

Trigonometric Methods

The parameter of sin, cos, and tan is an angle in radians

The return value of asin, acos, and atan is a degree in radians

Page 8: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 8© Dr Jonathan Cazalas

Trigonometric Methods

Examples:Math.toDegrees(Math.PI / 2); //returns 90.0

Math.toRadians(30); //returns 0.5236 (same as π/6)

Math.sin(0); //returns 0.0

Math.sin(Math.toRadians(270)); // returns -1.0

Math.sin(Math.PI / 6); // returns 0.5

Math.sin(Math.PI / 2); // returns 1.0

Math.cos(0); // returns 1.0

Math.cos(Math.PI / 6); // returns 0.866

Math.cos(Math.PI / 2); // returns 0

Math.asin(0.5); // returns 0.523598333 (same as π/6)

Math.acos(0.5); //returns 1.0472 (same as π/3)

Math.atan(1.0); // returns 0.785398 (same as π/4)

Page 9: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 9© Dr Jonathan Cazalas

Exponent Methods

Page 10: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 10© Dr Jonathan Cazalas

Exponent Methods

Examples:Math.exp(1); // returns 2.71828

Math.log(Math.E); // returns 1.0

Math.log10(10); // returns 1.0

Math.pow(2, 3); // returns 8.0

Math.pow(3, 2); // returns 9.0

Math.pow(4.5, 2.5); // returns 22.91765

Math.sqrt(4); // returns 2.0

Math.sqrt(10.5); // returns 4.24

Page 11: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 11© Dr Jonathan Cazalas

Rounding Methods

Math class contains five 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).

Page 12: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 12© Dr Jonathan Cazalas

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

Page 13: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 13© Dr Jonathan Cazalas

min, max, and abs

min and max methods

– min(a, b): returns minimum of a and b

– max(a, b): returns the maximum of a and b

abs method:

– abs(a): returns the absolute value of a

Examples:Math.max(2, 3); //returns 3

Math.max(2.5, 3); //returns 3

Math.min(2.5, 4.6); //returns 2.5

Math.abs(-2); //returns 2

Math.abs(-2.1); //returns 2.1

Page 14: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 14© Dr Jonathan Cazalas

The random Method

Generates a random double value

– This value is greater than or equal to 0.0 and less

than 1.0

0 <= Math.random() < 1.0

– Examples:

(int)(Math.random() * 10);

– returns a random integer between 0 and 9

50 + (int)(Math.random() * 50);

– returns a random integer between 50 and 99

a + Math.random() * b;

– returns a random number between a and a+b, excluding a+b

Page 15: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 15© Dr Jonathan Cazalas

Evaluate the following method calls:

a. Math.sqrt(4)

b. Math.pow(2,3)

c. Math.rint(-2.5)

d. Math.ceil(7.1)

e. Math.ceil(-2.8)

f. Math.floor(-2.2)

g. Math.floor(9.9)

h. Math.round(2.5)

i. Math.round(Math.abs(-3.5))

2

8

-2.0

8

-2.0

-3.0

9.0

3

4

Page 16: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 16© Dr Jonathan Cazalas

Character Data Type

Java allows you to process characters using the

character data type, char

– char represents a single character

– a character literal is enclosed in single quotation marks

Examples:

– char letter = ‘A’;

Assigns the character A to the char variable letter

– char numChar = ‘4’;

Assigns the digit character 4 to the char variable numChar

Page 17: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 17© Dr Jonathan Cazalas

Unicode and ASCII code

Computers use binary numbers internally

– a character is stored in a computer as a sequence of 0s

and 1s

– Mapping a character to its binary representation is

called encoding

– There are different ways to encode a character

– Java uses Unicode

Unicode is an encoding scheme

Originally designed for 16-bit character encoding

This allowed for 216 = 65,536 characters

Page 18: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 18© Dr Jonathan Cazalas

Unicode and ASCII code

Unicode

– So Unicode originally allowed only 65,536 characters

– Is that enough characters to represent all the characters

in the world?

The answer is no.

– So Unicode has been extended to allow 1,112,064

different types of characters

These are called supplementary characters

We will not discuss those characters in CPCS-202

– For simplicity, we consider only the original 16-bit

Unicode characters (stored in a char variable)

Page 19: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 19© Dr Jonathan Cazalas

Unicode and ASCII code

Unicode

– Again, we only consider 16-bit Unicode characters

Remember: one byte is eight bits

So a 16-bit Unicode requires two bytes, preceded by \u

– Also, because reading 16 bits is cumbersome and

difficult, Unicode is usually expressed in hexadecimal

Remember:

– Decimal number system: 10 digits from 0 to 9

– Hexadecimal number system: 16 digits from 0 to F

• 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

– We need 4 bits to represent a Hex digit

• Example: 15 in decimal is 1111 in binary and F in Hex

Page 20: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 20© Dr Jonathan Cazalas

Unicode and ASCII code

Unicode

– Hex system:

Page 21: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 21© Dr Jonathan Cazalas

Unicode and ASCII code

Unicode

– Unicode is usually expressed in Hexadecimal

16 bits in Unicode

Each hexadecimal requires 4 bits

So that means each Unicode is expressed in 4 Hex digits!

From \u0000 to \uFFFF

– Example:

Page 22: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 22© Dr Jonathan Cazalas

Unicode and ASCII code

ASCII

– Most computers use ASCII

American Standard Code for International Exchange

– 8-bit encoding scheme

Used to represent all uppercase and lowercase letters, all

digits, all punctuation marks, and control characters

128 characters total

– Unicode includes ASCII code

\u0000 to \u007F representing the 128 ASCII characters

Page 23: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 23© Dr Jonathan Cazalas

Unicode and ASCII code

ASCII

– You can use both ASCII and Unicode in your program

– The following statements are equivalent:

char letter = ‘A’;

char letter = ‘\u0041’; // A’s Unicode value is 0041

– Both statements assign character A to the char variable

letter

Page 24: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 24© Dr Jonathan Cazalas

Escape Sequences for Special

CharactersWhat if you want to print a message with

quotation marks printed in the output.

– Can you do this:System.out.println("He said "Java is fun"");

– Answer: No!

This statement will give a compile error.

The compiler will see the quotation before the word Java.

And the compiler will assume this is the END of the string!

So it gets confused when it sees more characters after

– How do we overcome this problem?

Escape Sequences

Page 25: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 25© Dr Jonathan Cazalas

Escape Sequences for Special

CharactersEscape Sequences:

– Java uses a special notation to represent special

characters

This notation is called an escape sequence

Example escape sequences are shown in the table below:

Page 26: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 26© Dr Jonathan Cazalas

Escape Sequences for Special

CharactersEscape Sequences:

– So we use a backslash (\) followed by a character or a

combination of digits

– Example:System.out.println("He said \" Java is fun\"");

– The output is:

He said "Java is fun"

– Note that the symbols \ and " together represent one

character

Page 27: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 27© Dr Jonathan Cazalas

Escape Sequences for Special

CharactersEscape Sequences:

– So what if you wanted to actually print a backslash

– Example: what if you wanted to print the following:\t is a tab character

So we actually want to print the backslash to the screen

– How can you do this?

Backslash is an escape character

Using a backslash signals to the compiler that a special

character should be printed

So how do we actually print the backslash: we escape it!

System.out.println("\\t is a tab character");

Page 28: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 28© Dr Jonathan Cazalas

Casting between char and

Numeric Types Implicit casting:

– Implicit casting can be used if the result of casting fits

into the target variable.

– Otherwise, explicit casting is required

– Example:

Unicode of 'a' is 97

This is within the range of a byte (and of course an int)

So the following are okay:

byte b = 'a'; // same as byte b = (byte)'a';

int i = 'a'; // same as int i = (int)'a';

char c = 97; // same as char c = (char)97;

Page 29: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 29© Dr Jonathan Cazalas

Casting between char and

Numeric TypesExplicit casting:

– The following would be incorrect:

byte b = '\uFFF4';

Why?

Because the right side is 16 bits. A byte is 8 bits

Clearly, 16 bits does not fit into 8 bits

– To force the assignment, use explicit casting:

byte b = (byte)'\uFFF4';

– Remember: a char uses two bytes

So any positive integer between 0000 and FFFF in

hexadecimal can be cast into a char implicitly.

Page 30: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 30© Dr Jonathan Cazalas

Casting between char and

Numeric TypesNumeric operators

– All numeric operators can be applied to char

operands

– A char operand is automatically cast into a number if

the other operand is a number or a character

– But if the other operand is a string, the character is

concatenated with the string

Page 31: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 31© Dr Jonathan Cazalas

Casting between char and

Numeric TypesNumeric operators

– Examples:int i = '2' + '3'; // (int)'2' is 50 and (int)'3' is 51

System.out.println("i is " + i); // i is 101

int j = 2 + 'a'; // (int)'a' is 97

System.out.println("j is " + j); // j is 99

System.out.println("Module " + '2');

System.out.println(j + " is the Unicode for character " + (char)j);

Output:

i is 101

j is 99

Module 2

99 is the Unicode for character c

Page 32: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 32© Dr Jonathan Cazalas

Comparing and Testing Characters

Two characters can be compared using relational

operators

– just like comparing two numbers

This is done by comparing the Unicode values

Examples:'a' < 'b' is true because the Unicode for 'a' (97) is less than the Unicode for 'b' (98).

'a' < 'A' is false because the Unicode for 'a' (97) is greater than the Unicode for 'A' (65).

'1' < '8' is true because the Unicode for '1' (49) is less than the Unicode for '8' (56).

Page 33: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 33© Dr Jonathan Cazalas

Comparing and Testing Characters

Often you must test whether a character is a

number, a letter, or even if it is uppercase or

lowercase.

– The following code tests whether a character ch is an

uppercase letter, a lowercase letter, or a digit:

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");

Page 34: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 34© Dr Jonathan Cazalas

Methods in the Character Class

Testing characters is common

– Therefore, Java gives the following methods inside the Character class

Page 35: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 35© Dr Jonathan Cazalas

Methods in the Character Class

Using the Character class:

– Examples: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'));

Output:isDigit('a') is false

isLetter('a') is true

isLowerCase('a') is true

isUpperCase('a') is false

toLowerCase('T') is t

toUpperCase('q') is Q

Page 36: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 36© Dr Jonathan Cazalas

Evaluate the following :System.out.println('a' < 'b');

System.out.println('a' <= 'A');

System.out.println('a' > 'b');

System.out.println('a' >= 'A');

System.out.println('a' == 'a');

System.out.println('a' != 'b');

true

false

false

true

true

true

Page 37: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 37© Dr Jonathan Cazalas

What is the output of the following program:

Output:

b

c

-2

public class Test {

public static void main(String[] args) {

char x = 'a';

char y = 'c';

System.out.println(++x);

System.out.println(y++);

System.out.println(x - y);

}

}

Page 38: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 38© Dr Jonathan Cazalas

Write code that generates a random lowercase

letter.

– Remember: lowercase letters are 97 to 122 in decimal

So 26 possible values (letters)

public class RandomLowercase{

public static void main(String[] args) {

int x = 97 + (int)(Math.random() * 26);

char randomChar = x;

System.out.println("Random char: " + randomChar);

}

}

Page 39: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 39© Dr Jonathan Cazalas

The String Type

A char represents one character

So how do we represent a sequence (a string) of

characters?

Use the data type called String

Example:

– The following code declares variable message to be

a string with the value "Welcome to Java"

String message = "Welcome to Java";

Page 40: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 40© Dr Jonathan Cazalas

The String Type

String details:

– String is a predefined class in the Java library

Just like the classes System and Scanner

– The String type is not a primitive type

– It is known as a reference type

– And the variable declared by a reference type is

known as a reference variable that references an object

String message = "Welcome to Java";

Here, message is a reference variable that references a

string object with the contents "Welcome to Java"

Page 41: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 41© Dr Jonathan Cazalas

The String Type

String details:

– Declaring a String variable:

String firstName;

– Assign a value to the String variable:

firstName = "Muhammad Alzahrani";

– Most important:

How to use the methods in the String class

The following page shows some of the common methods

that can be used to operate on Strings

Page 42: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 42© Dr Jonathan Cazalas

Simple Methods for String Objects

String details:

– Strings are objects in Java

For this reason, these methods are called "instance methods"

– A non-instance method is called a static method

All methods in the Math class are static methods

– They are not tied to a specific object instance

Page 43: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 43© Dr Jonathan Cazalas

Simple Methods for String Objects

String details:

– Again, string methods are instance methods

This means that they are tied to a specific object/string

– Therefore, you must invoke them from a specific

object/string

– Syntax: referenceVariable.methodName(arguments)

Recall: syntax to invoke a static method:

– ClassName.methodName(arguments)

– Example: Math.pow(2, 3); // result is 8

So instead of mentioning the Class of the method

We mention the specific variable

Page 44: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 44© Dr Jonathan Cazalas

Simple Methods for String Objects

Getting String Length

– Use the length() method to return the number of

characters in a string

– Example:

String message = "Welcome to Java";

System.out.println("The length of " +

message + " is " + message.length());

Output:

The length of Welcome to Java is 15

Page 45: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 45© Dr Jonathan Cazalas

Simple Methods for String Objects

Getting Characters from a String

– The s.charAt(index) method can be used to

retrieve a specific character in a string s

The index is between 0 and s.length()-1

Example:

message.charAt(0); // Returns the character W

Page 46: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 46© Dr Jonathan Cazalas

Simple Methods for String Objects

Concatenating Strings

– You can use the concat method to concatenate two

strings

– Example:

Strings s3 = s1.concat(s2);

concatenates s1 and s2 into s3

– String concatenation is very common in Java

– Therefore, Java gives is the plus (+) operator for this

– Example:

String s3 = s1 + s2;

Page 47: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 47© Dr Jonathan Cazalas

Simple Methods for String Objects

Concatenating Strings

– Remember: you can concatenate a number with a string

– At least one of the operands must be a string

– Examples:String message = "Welcome " + "to " + "Java";

String s = "Module " + 2;

– s becomes "Module 2"

String s1 = "Supplement " + 'B';

– s1 becomes "Supplement B"

Page 48: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 48© Dr Jonathan Cazalas

Simple Methods for String Objects

Concatenating Strings

– The augmented += operator can also be used for

concatenation with strings

– Example:

String message = "Welcome to Java";

message += ", and Java is fun.";

System.out.println(message);

Output:

"Welcome to Java, and Java is fun."

Page 49: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 49© Dr Jonathan Cazalas

Simple Methods for String Objects

Concatenating Strings

– Final example:

If i=1 and j=2, what is the output of the following:

System.out.println("i + j is " + i + j);

Output:

"i + j is 12"

Why?

– In Java, we read from left to right

– So we have the String "i + j is " concatenated with the int i

– The result: a new String ("i + j is 1")

– This new String is the concatenated with the int j

– You can force addition by enclosing the i + j in parentheses

Page 50: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 50© Dr Jonathan Cazalas

Simple Methods for String Objects

Converting Strings

– Methods:

toLowerCase() method returns a new string with all

lowercase letters

toUpperCase() method returns a new string with all

uppercase letters

trim() method returns a new string after removing all

whitespace characters from both ends of the string

– Final example: "Welcome".toLowerCase(); // returns a new string welcome

"Welcome".toUpperCase(); // returns a new string WELCOME

"\t a b c ".trim(); // returns a new string a b c

Page 51: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 51© Dr Jonathan Cazalas

Reading a String from the Console

How to read a string from the console

– Use the next() method on a Scanner objectSystem.out.print("Enter three words separated by spaces: ");

String s1 = input.next(); // assume we made Scanner object

String s2 = input.next();

String s3 = input.next();

System.out.println("s1 is " + s1);

System.out.println("s2 is " + s2);

System.out.println("s3 is " + s3);

Page 52: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 52© Dr Jonathan Cazalas

Reading a String from the Console

How to read a complete line from the console

– Use the nextLine() method on a Scanner object

Scanner input = new Scanner(System.in);

System.out.println("Enter a line: ");

String s = input.nextLine();

System.out.println("The line entered is " + s);

Page 53: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 53© Dr Jonathan Cazalas

Reading a Character from the Console

How to read a single character from the console

– Use the nextLine() method to read a string and

then invoke the charAt(0) method on the string

Scanner input = new Scanner(System.in);

System.out.print("Enter a character: ");

String s = input.nextLine();

char ch = s.charAt(0);

System.out.println("The character entered is " + ch);

Page 54: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 54© Dr Jonathan Cazalas

Comparing Strings

The String class has many methods you can

use to compare two strings.

Page 55: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 55© Dr Jonathan Cazalas

Comparing Strings

String equality

– How can you check if two strings are equal?

– Note: you cannot use the == operator

– Example:if (s1 == s2)

System.out.println("s1 and s2 are the same object");

else

System.out.println("s1 and s2 are different object");

This will only tell us if two string reference variables point

to (refer to) the same object

Page 56: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 56© Dr Jonathan Cazalas

Comparing Strings

String equality

– So how can you check if two strings are equal?

– Meaning, how to check if they have same contents?

– Use the equals() method

– Example:if (s1.equals(s2))

System.out.println("s1 and s2 have same contents");

else

System.out.println("s1 and s2 are not equal");

Page 57: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 57© Dr Jonathan Cazalas

Comparing Strings

String equality

– Example:

String s1 = "Welcome to Java";

String s2 = "Welcome to Java";

String s3 = "Welcome to C++";

System.out.println(s1.equals(s2)); // true

System.out.println(s1.equals(s3)); // false

Page 58: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 58© Dr Jonathan Cazalas

Comparing Strings

compareTo() method

– We can use the compareTo() method to compare two

strings

This allows us to alphabetically order the strings

– Syntax:

s1.compareTo(s2);

Returns the value 0 if s1 is equal to s2

Returns a value less than 0 if s1 is "less than" s2

Returns a value greater than 0 if s1 is "greater than" s2

– Example:

"abc".compareTo("abg"); // returns -4

Page 59: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 59© Dr Jonathan Cazalas

Program 1: OrderTwoCities

Write a program that prompts the user to enter

two cities and then displays them in alphabetical

order.

Remember:

– Step 1: Problem-solving Phase

– Step 2: Implementation Phase

Page 60: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 60© Dr Jonathan Cazalas

Program 1: OrderTwoCities

Step 1: Problem-solving Phase

– Algorithm:

1. Prompt the user to enter an two Strings

2. Compare the two strings using compareTo() method

3. Print the cities in correct alphabetical order

Page 61: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 61© Dr Jonathan Cazalas

Program 1: OrderTwoCities

Step 2: Implementation

Page 62: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 62© Dr Jonathan Cazalas

Program 1: OrderTwoCities

Run the Program:

– Note:

Some city names have multiple words

– Such as New York

Therefore, we used nextLine() to scan the city name

– Instead of next()

Click here to view and trace code

Page 63: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 63© Dr Jonathan Cazalas

Obtaining Substrings

You can get a substring, from a string, by using the substring method in the String class

Example:String message = "Welcome to Java";

String message = message.substring(0, 11) + "HTML";

System.out.println(message);

– Output:

Welcome to HTML

Page 64: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 64© Dr Jonathan Cazalas

Obtaining Substrings

Java gives you two substring methods:

– substring(beginIndex)

Returns this string's substring that begins with the character

at the specified beginIndex and extends to the end of the

string

– substring(beginIndex, endIndex)

Returns this string's substring that begins with the character at the specified beginIndex and extends to the character

at index endIndex–1

– NOTE: the character at endIndex is NOT part of the substring

Page 65: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 65© Dr Jonathan Cazalas

Finding a Character or a Substring

in a StringThe String class provides several versions of

indexOf and lastIndexOf methods to find a

character or a substring in a string

Page 66: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 66© Dr Jonathan Cazalas

Finding a Character or a Substring

in a StringThe String class provides several versions of

indexOf and lastIndexOf methods to find a

character or a substring in a string

– Examples:"Welcome to Java".indexOf('W') returns 0.

"Welcome to Java".indexOf('o') returns 4.

"Welcome to Java".indexOf('o', 5) returns 9.

"Welcome to Java".indexOf("come") returns 3.

"Welcome to Java".indexOf("Java", 5) returns 11.

"Welcome to Java".indexOf("java", 5) returns -1.

Page 67: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 67© Dr Jonathan Cazalas

Finding a Character or a Substring

in a StringThe String class provides several versions of

indexOf and lastIndexOf methods to find a

character or a substring in a string

– Examples:"Welcome to Java".lastIndexOf('W') returns 0.

"Welcome to Java".lastIndexOf('o') returns 9.

"Welcome to Java".lastIndexOf('o', 5) returns 4.

"Welcome to Java".lastIndexOf("come") returns 3.

"Welcome to Java".lastIndexOf("Java", 5) returns -1.

"Welcome to Java".lastIndexOf("Java") returns 11.

Page 68: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 68© Dr Jonathan Cazalas

Finding a Character or a Substring

in a StringPractical Example

– Suppose a string s contains the first name and last

name of a student, separated by a space

– How can you extract the first name and last name?

– Can we use a method to find the space?

YES!

We can use the indexOf(' ')

– This will give us the index of the first space

Then, because we know this index, we can use the

substring() method to find the first name and the last

name

Page 69: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 69© Dr Jonathan Cazalas

Finding a Character or a Substring

in a StringPractical Example

– Solution:

String s = "Kim Jones";

int k = s.indexOf(' ');

String firstName = s.substring(0, k);

String lastName = s.substring(k + 1);

Page 70: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 70© Dr Jonathan Cazalas

Conversion between Strings and

NumbersYou can convert a numeric string into an int

How?

– Use the Integer.parseInt() method

– Example:int value = Integer.parseInt("152");

You can also convert a string to a double

– Use the Double.parseDouble() method

– Example:double value = Double.parseDouble("827.55");

Page 71: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 71© Dr Jonathan Cazalas

Conversion between Strings and

NumbersCan you convert a number to a String?

– Yes.

– You can do it a complicated way

We won't bother showing you!

– OR, you do it the EASY way:

int number = 7;

String s = number + "";

kinda like a "hack"

But it works great!

We concatenate a number with the empty string

Result: we get a string representation of the number!

Page 72: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 72© Dr Jonathan Cazalas

Suppose that s1, s2, and s3 are three strings:

String s1 = "Welcome to Java";

String s2 = "Programming is fun";

String s3 = "Welcome to Java";

What are the results of the following expressions?a. s1 == s2

b. s1 == s3

c. s1.equals(s2)

d. s1.equals(s3)

e. s1.compareTo(s2)

f. s2.compareTo(s3)

g. s2.compareTo(s2)

h. s1.charAt(0)

false

false

false

true

Greater than 0

Less than 0

0 (cause contents are equal)

W

Page 73: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 73© Dr Jonathan Cazalas

Suppose that s1, s2, and s3 are three strings:

String s1 = "Welcome to Java";

String s2 = "Programming is fun";

String s3 = "Welcome to Java";

What are the results of the following expressions?a. s1.indexOf('J')

b. s1.indexOf('j')

c. s1.indexOf("to")

d. s1.lastIndexOf('a')

e. s1.length()

f. s1.substring(5)

g. s1.substring(5,12)

h. s1.endsWith("Java")

11

-1 (meaning, not found)

8 (the starting index of "to")

14

15

me to Java

me to J

true

Page 74: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 74© Dr Jonathan Cazalas

Show the output of the following expressions:a) System.out.println("1" + 1);

b) System.out.println('1' + 1);

c) System.out.println("1" + 1 + 1);

d) System.out.println("1" + (1 + 1));

e) System.out.println('1' + 1 + 1);

11

50

111

12

51

Page 75: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 75© Dr Jonathan Cazalas

Program 2: HexDigit2Dec

Write a program that prompts the user to enter

one hex digit and then displays this as a decimal

value.

Remember:

– Step 1: Problem-solving Phase

– Step 2: Implementation Phase

Page 76: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 76© Dr Jonathan Cazalas

Program 2: HexDigit2Dec

Step 1: Problem-solving Phase

– Algorithm:

1. Prompt the user to enter a hex digit

2. Check to see if the input is exactly one digit

3. If so, confirm the input is between 0-9 or A-F

– Then print the decimal equivalent

4. Otherwise, print invalid input

– For step 3 above, we can use methods we've

learned in this Module

Page 77: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 77© Dr Jonathan Cazalas

Program 2: HexDigit2Dec

Step 2: Implementation

Page 78: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 78© Dr Jonathan Cazalas

Program 2: HexDigit2Dec

Step 2: Implementation

is A-F?

is 0-9?

Page 79: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 79© Dr Jonathan Cazalas

Program 2: HexDigit2Dec

Run the Program:

Click here to view and trace code

Page 80: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 80© Dr Jonathan Cazalas

Program 3: Lottery

Re-do the Lottery program from Module 3. This

time, use strings for both the randomly generated

number and the user input. The logic is easier

than dealing with mod!

Remember:

– Step 1: Problem-solving Phase

– Step 2: Implementation Phase

Page 81: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 81© Dr Jonathan Cazalas

Program 3: Lottery

Step 1: Problem-solving Phase

– Notes:

The user will win money according to the following rules:

1. If the user lottery number matches the winning lottery number in

the exact order, the award is $10,000

2. If all digits in the user lottery number match all digits in the

winning lottery number (but not in the exact order), the award is

$3,000

3. If only one digit in the user lottery number matches the winning

lottery number, the award is $1,000

User MUST enter two digits

Page 82: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 82© Dr Jonathan Cazalas

Program 3: Lottery

Step 1: Problem-solving Phase

– Algorithm:

1. Randomly generate a winning lottery number

– Between 0 and 99. This is easy.

int lottery = (int)(Math.random() * 100);

2. Save that number as a String!

3. Prompt user for input

4. Scan the lottery number from user as a String!

5. Compare user number with winning number, and

determine winning amount (if any)

Here we must compare the actual digits!!!

6. Display results to user

Page 83: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 83© Dr Jonathan Cazalas

Program 3: Lottery

Step 1: Problem-solving Phase

– So how do we compare digits?

We are saving these two-digit numbers as strings

Therefore, we can extract the individual digits using the

String method charAt()

This is MUCH easier than mod!

Example:

String number = "49";

char c1 = number.charAt(0);

char c2 = number.charAt(1);

Page 84: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 84© Dr Jonathan Cazalas

Program 3: Lottery

Step 2: Implementation

Page 85: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 85© Dr Jonathan Cazalas

Program 3: Lottery

Step 2: Implementation

Page 86: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 86© Dr Jonathan Cazalas

Program 3: Lottery

Run the Program:

Click here to view and trace code

Page 87: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 87© Dr Jonathan Cazalas

Formatting Output

You can use the System.out.printf method

to display formatted output

– When printing double values, often we do not need or

want all the decimals.

– In fact, often we want only two (for money)!

– In Module 2, we learned that you can get two digits

after the decimal as follows:

double x = 16.404674;

x = (int)(x * 100) / 100.0;

However, if we print x, we will get 16.4

– The final zero will not print! So how do we print the zero?

Page 88: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 88© Dr Jonathan Cazalas

Formatting Output

You can use the System.out.printf method

to display formatted output

– How to print 16.404674 with only two decimals?

– Easy!

double x = 16.404674;

System.out.printf("x is %4.2f", x);

Output:

x is 16.40

Page 89: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 89© Dr Jonathan Cazalas

Formatting Output

You can use the System.out.printf method

to display formatted output

– Another example:

Page 90: Module 4: Characters, Strings, and Mathematical Functionskau.cazalas.com/courses/javase/notes/JavaProgramming_Module4.pdf · Math.ceil(2.1); //returns 3.0 ... System.out.println

Module 4: Characters, Strings, and Mathematical Functions page 90© Dr Jonathan Cazalas

Formatting Output

You can use the System.out.printf method

to display formatted output

– Common format specifiers: