Top Banner
COSC 236 Section 101 Computer Science 1 -- Prof. Michael A. Soderstrand
47

COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Oct 25, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

COSC 236 Section 101Computer Science 1 -- Prof. Michael A. Soderstrand

Page 2: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

COSC 236 Web Site

• You will always find the course material at:

http://www.class-notes.us or

http://www.class-notes.info or

http://www.lecture-notes.tripod.com

From this site you can click on the COSC-236 tab to download the PowerPoint lectures, the Quiz solutions and the Laboratory assignments.

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

2

Page 3: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

3

Page 4: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Review of Quiz 11

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

4

Page 5: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Review of Quiz 11

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

5

The key points to understand from Quiz 11 are as follows:

1. The actual parameter in the calling program is a string that contains the Scanner

input entered by the user.

2. The actual parameter from the calling method is copied into the formal parameter

in the called method (this is the text to be reversed).

3. The three key concepts tested in Quiz 11:

a. Using String Method .toUpperCase() to convert the text to upper case

b. Setting up a for loop to count down from the last character (text.length()-1) to

the first character in the string

c. Using String Method .charAt(i) or .substring(i, i+1) to access a single character

in text and print it out using System.out.print(text.charAt(i));

Page 6: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Review of Quiz 11 (using text.charAt(i))

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

6

Page 7: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Review of Quiz 11 (using text.substing(i, i+1))

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

7

Page 8: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Review of Quiz 11

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

8

Page 9: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Factoring if/else code (pp. 247 – 249)• factoring: Extracting common/redundant code.

• Can reduce or eliminate redundancy from if/else code.

• Example:if (a == 1) {

System.out.println(a);x = 3;b = b + x;

} else if (a == 2) {System.out.println(a);x = 6;y = y + 10;b = b + x;

} else { // a == 3System.out.println(a);x = 9;b = b + x;

}

System.out.println(a);

x = 3 * a;

if (a == 2) {

y = y + 10;

}

b = b + x;

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

9

4.1 if/else statement (pp. 235 – 249)

Slide from last lectureUPDATE

Page 10: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

4.3 Text Processing (pp. 261 – 270)

•Programmers commonly face problems that require them to create, edit, examine, and format text. • Collectively, we call these tasks text processing.• Text Processing: Editing and formatting strings of text.

• In this section:• We look in more detail at the char primitive type• Introduce a new command called System.out.printf. • Both of these tools are very useful for text-processing

tasks.

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

10

Page 11: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Type char (pp. 261-262)• char : A primitive type representing single characters.

• A String is stored internally as an array of char

String s = "Ali G.";

• It is legal to have variables, parameters, returns of type char• surrounded with apostrophes: 'a' or '4' or '\n' or '\''

char letter = 'P';

System.out.println(letter); // P

System.out.println(letter + " Diddy"); // P Diddy

index 0 1 2 3 4 5

value 'A' 'l' 'i' ' ' 'G' '.'

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

11

4.3 Text Processing (pp. 261 – 270)

Page 12: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

The charAt method (p. 262)• The chars in a String can be accessed using the charAt method.

• charAt(n) accepts an int n index parameter and returns the char at that index

String food = "cookie";char firstLetter = food.charAt(0); // 'c'

System.out.println(firstLetter + " is for " + food);

• You can use a for loop to print or examine each character.

String major = "CSE";

for (int i = 0; i < major.length(); i++) { // output:

char c = major.charAt(i); // C

System.out.println(c); // S

} // E

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

12

4.3 Text Processing (pp. 261 – 270)

Page 13: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Comparing char values (p. 262)• You can compare chars with ==, !=, and other operators:

String word = console.next();

char last = word.charAt(word.length() - 1);

if (last == 's') {

System.out.println(word + " is plural.");

}

// prints the alphabet

for (char c = 'a'; c <= 'z'; c++) {

System.out.print(c);

}

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

13

4.3 Text Processing (pp. 261 – 270)

Page 14: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

14

4.3 Text Processing (pp. 261 – 270)

Differences between char and String (p. 262)

Page 15: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

15

4.3 Text Processing (pp. 261 – 270)

Differences between == and .equals (p. 262)

The == detects that they are not the same object – so == gives a falseThe .equals detects that they contain the same string – so .equals gives a true

Page 16: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Comparing strings (p. 262)• Relational operators such as < and == fail on objects.

Scanner console = new Scanner(System.in);

System.out.print("What is your name? ");

String name = console.next();

if (name == "Barney") {

System.out.println("I love you, you love me,");

System.out.println("We're a happy family!");

}

• This code will compile, but it will not print the song.

• == compares objects by references (seen later), so it often gives false even when two Strings have the same letters.

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

16

4.3 Text Processing (pp. 261 – 270)

Page 17: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

The equals method (p. 262)• Objects are compared using a method named equals.

Scanner console = new Scanner(System.in);

System.out.print("What is your name? ");

String name = console.next();

if (name.equals("Barney")) {

System.out.println("I love you, you love me,");

System.out.println("We're a happy family!");

}

• Technically this is a method that returns a value of type boolean,the type used in logical tests.

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

17

4.3 Text Processing (pp. 261 – 270)

Page 18: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

String test methods (p. 262)

String name = console.next();

if (name.startsWith("Prof")) {

System.out.println("When are your office hours?");

} else if (name.equalsIgnoreCase("STUART")) {

System.out.println("Let's talk about meta!");

}

Method Description

equals(str) whether two strings contain the same characters

equalsIgnoreCase(str) whether two strings contain the same characters, ignoring upper vs. lower case

startsWith(str) whether one contains other's characters at start

endsWith(str) whether one contains other's characters at end

contains(str) whether the given string is found within this one

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

18

4.3 Text Processing (pp. 261 – 270)

Page 19: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

char vs. String (p. 262)• "h" is a String, but 'h' is a char (each has Unicode 104, but they are different)

• A String is an object; it contains methods.String s = "h";s = s.toUpperCase(); // "H"int len = s.length(); // 1char first = s.charAt(0); // 'H'

• A char is primitive; you can't call methods on it.char c = 'h';c = c.toUpperCase(); // ERRORs = s.charAt(0).toUpperCase(); // ERROR

• What is s + 1 ? What is c + 1 ? • What is s + s ? What is c + c ?

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

19

4.3 Text Processing (pp. 261 – 270)

s + 1 = “h1” c + 1 = 105s + s = “hh” c + c = 208

Page 20: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

char vs. int (pp. 262-263)• Each char is mapped to an integer value internally

• Called an ASCII value

'A' is 65 'B' is 66 ' ' is 32'a' is 97 'b' is 98 '*' is 42

• Mixing char and int causes automatic conversion to int.'a' + 10 is 107, 'A' + 'A' is 130

• To convert an int into the equivalent char, type-cast it.(char) ('a' + 2) is 'c'

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

20

4.3 Text Processing (pp. 261 – 270)

Page 21: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Cumulative Text Algorithms (pp. 263-265)

• Cumulative algorithms accumulate a sum or a product• We saw these in last lecture for finding the sum and product of a

set of numbers

• We can also do accumulation algorithms with text• Count the number of times something appears in text

• How many times a character appears

• How many times an alphabetic letter appears

• How many times a number appears

• And many similar counting algorithms

• Concatenate characters to build up a stringCOSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

21

4.3 Text Processing (pp. 261 – 270)

Page 22: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Cumulative Text Algorithms (pp. 263-265)Method to count the number of times a character appears in a line of text:

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

22

4.3 Text Processing (pp. 261 – 270)

public static int count(String text, char c) {

int found = 0;

for (int i = 0; i < text.length(); i++) {

if (text.charAt(i) == c) {

found++;

}

}

return found;

}

Page 23: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Cumulative Text Algorithms (pp. 263-265)Some useful methods for text processing:

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

23

4.3 Text Processing (pp. 261 – 270)

Page 24: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Cumulative Text Algorithms (pp. 263-265)Method to count the number of alphabetic character that appear in a line of text:

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

24

4.3 Text Processing (pp. 261 – 270)

public static int countLetters(String phrase) {

int count = 0;

for (int i = 0; i < phrase.length(); i++) {

char ch = phrase.charAt(i);

if (Character.isLetter(ch)) {

count++;

}

}

return count;

}

Page 25: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Cumulative Text Algorithms (pp. 263-265)Method to do cumulative concatenation in order to reverse a line of text:

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

25

4.3 Text Processing (pp. 261 – 270)

public static String reverse(String phrase) {

String result = "";

for (int i = 0; i < phrase.length(); i++) {

result = phrase.charAt(i) + result;

}

return result;

}

Compare this algorithm to the algorithm we used in the Quiz 11 solution discussed at the beginning of today’s lecture.

Page 26: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Formatting text with printf (pp. 265 – 270)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

26

4.3 Text Processing (pp. 261 – 270)

Page 27: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Formatting text with printf (pp. 265 – 270)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

27

4.3 Text Processing (pp. 261 – 270)

Page 28: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Formatting text with printf (pp. 265 – 270)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

28

4.3 Text Processing (pp. 261 – 270)

Page 29: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Formatting text with printf (pp. 265 – 270)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

29

4.3 Text Processing (pp. 261 – 270)

Page 30: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Formatting text with printf (pp. 265 – 270)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

30

4.3 Text Processing (pp. 261 – 270)

Page 31: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Formatting text with printf (pp. 265 – 270)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

31

4.3 Text Processing (pp. 261 – 270)

Page 32: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Formatting text with printf (pp. 265 – 270)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

32

4.3 Text Processing (pp. 261 – 270)

Page 33: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Formatting text with printf (pp. 265 – 270)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

33

4.3 Text Processing (pp. 261 – 270)

Page 34: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Formatting text with printf (pp. 265 – 270)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

34

4.3 Text Processing (pp. 261 – 270)

Page 35: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Formatting text with printf (pp. 265 – 270)System.out.printf("format string", parameters);

• A format string can contain placeholders to insert parameters:• %d integer• %f real number• %s string

• these placeholders are used instead of + concatenation

• Example:int x = 3;int y = -17;System.out.printf("x is %d and y is %d!\n", x, y);

// x is 3 and y is -17!

• printf does not drop to the next line unless you write \n

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

35

4.3 Text Processing (pp. 261 – 270)

Page 36: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

printf width (pp. 265-270)• %Wd integer, W characters wide, right-aligned• %-Wd integer, W characters wide, left-aligned• %Wf real number, W characters wide, right-aligned• ...

for (int i = 1; i <= 3; i++) {for (int j = 1; j <= 10; j++) {

System.out.printf("%4d", (i * j));}System.out.println(); // to end the line

}

Output:1 2 3 4 5 6 7 8 9 102 4 6 8 10 12 14 16 18 203 6 9 12 15 18 21 24 27 30

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

36

4.3 Text Processing (pp. 261 – 270)

Page 37: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

printf precision (pp. 265-270)• %.Df real number, rounded to D digits after decimal

• %W.Df real number, W chars wide, D digits after decimal

• %-W.Df real number, W wide (left-align), D after decimal

double gpa = 3.253764;

System.out.printf("your GPA is %.1f\n", gpa);

System.out.printf("more precisely: %8.3f\n", gpa);

Output:

your GPA is 3.3

more precisely: 3.254

8

3

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

37

4.3 Text Processing (pp. 261 – 270)

Page 38: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

printf question (pp, 265-270)• Modify our Receipt program to better format its output.

• Display results in the format below, with $ and 2 digits after .

• Example log of execution:

How many people ate? 4

Person #1: How much did your dinner cost? 20.00

Person #2: How much did your dinner cost? 15

Person #3: How much did your dinner cost? 25.0

Person #4: How much did your dinner cost? 10.00

Subtotal: $70.00

Tax: $5.60

Tip: $10.50

Total: $86.10

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

38

4.3 Text Processing (pp. 261 – 270)

Page 39: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

printf answer (partial) (pp. 265-270)// Calculates total owed, assuming 8% tax and 15% tip

public static void results(double subtotal) {

double tax = subtotal * .08;

double tip = subtotal * .15;

double total = subtotal + tax + tip;

// System.out.println("Subtotal: $" + subtotal);

// System.out.println("Tax: $" + tax);

// System.out.println("Tip: $" + tip);

// System.out.println("Total: $" + total);

System.out.printf("Subtotal: $%.2f\n", subtotal);

System.out.printf("Tax: $%.2f\n", tax);

System.out.printf("Tip: $%.2f\n", tip);

System.out.printf("Total: $%.2f\n", total);

}

}

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

39

4.3 Text Processing (pp. 261 – 270)

Page 40: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Catching Divide by Zero Errors (270-271)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

40

4.4 Conditional Execution (pp. 270 - 281)

• Because Java uses the IEEE standard for floating point numbers a divide by zero does not cause and error:• IEEE defines 0.0/0.0 as NaN (Not a Number)

• IEEE defines a positive number divided by zero as Infinity

• IEEE defines a negative number divided by zero as –Infinity

• However, IEEE does not specify what to do with integer divides by zero• Java will issue an exception (execution error) and stop running on a divide by

zero

• Java provides Try/Catch as one method to deal with exceptions

Page 41: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Catching Divide by Zero Errors (270-271)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

41

4.4 Conditional Execution (pp. 270 - 281)

Page 42: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Catching Divide by Zero Errors (270-271)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

42

4.4 Conditional Execution (pp. 270 - 281)

Try/Catch: Appendix p. 1118

Page 43: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Good Programming Practice (270-274)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

43

4.4 Conditional Execution (pp. 270 - 281)

• Good programming practice is to avoid execution errors• Check input values to be sure they are within limits

• Check preconditions before calling any method

• Check postconditions before exiting any methods

• Three different ways of checking• BEST: Check using Java conditionals (if/then/else)

• GOOD: Use Try/Catch to deal with exceptions

• FAIR: Have your program throw an exception when conditions are not met

• POOR: Don’t check and rely on Java exceptions

Page 44: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Good Programming Practice (270-274)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

44

4.4 Conditional Execution (pp. 270 - 281)

• Factorial method• Accepts an integer n and produces the factorial (1x2x3x4x … x(n-1)xn)

• Includes a test for negative n

• Throws an exception for negative n

• Three different ways of checking• BEST: Check for negative n before calling the method (if/then/else)

• GOOD: We could use Try/Catch to deal with exception

• FAIR: Allow the method to throw the exception on negative n

• POOR: Don’t check and in this case you will get an incorrect result for negative n

Page 45: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Factorial Method (270-274)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

45

4.4 Conditional Execution (pp. 270 - 281)

NOTE: A comma after the % token will format comas in the printout.

Page 46: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Factorial Method (270-274)

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

46

4.4 Conditional Execution (pp. 270 - 281)

Page 47: COSC 236 Section 101 - Tripodlecture-notes.tripod.com/handouts/COSC236Lecture12.pdfReview of Quiz 11 COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014 5 The key points to understand

Assignments for this week

1. Laboratory for Chapter 4 due Monday 10/20• IMPORTANT: When you email me your laboratory Word

Document, be sure it is all in one file

2. Wednesday we will review for Midterm 1 – look over all the quizzes in preparation.

3. Be sure to complete Quiz 12 before leaving class tonight• This is another program to write

• You must demonstrate the program to me before you leave lab

COSC 236 :Prof. M.A. Soderstrand Lecture 12 10/6/2014

47