Top Banner
This document is copyright (C) Stanford Computer Science and Marty Stepp, licensed under Creative Commons Attribution 2.5 License. All rights reserved. Based on slides created by Keith Schwarz, Mehran Sahami, Eric Roberts, Stuart Reges, and others. CS 106A, Lecture 8 Characters and Strings suggested reading: Java Ch. 8.1-8.4
129

CS 106A, Lecture 8 - Stanford University

Mar 26, 2022

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: CS 106A, Lecture 8 - Stanford University

Thisdocumentiscopyright(C)StanfordComputerScienceandMartyStepp,licensedunderCreativeCommonsAttribution2.5License.Allrightsreserved.BasedonslidescreatedbyKeithSchwarz,MehranSahami,EricRoberts,StuartReges,andothers.

CS106A,Lecture8CharactersandStrings

suggestedreading:JavaCh.8.1-8.4

Page 2: CS 106A, Lecture 8 - Stanford University

2

Learning Goals•Beabletoconfidentlywriteandcallmethodsthatuseparametersandreturnvalues.

•Beabletogeneraterandomvaluesinyourprograms.

•Beabletouseandmanipulatechars.•Beabletowritestringalgorithmsthatoperateoneachcharacter.

Page 3: CS 106A, Lecture 8 - Stanford University

3

Plan For Today•Announcements•Recap–Parameters–Return

•RandomNumbers•TextProcessing–Characters–Strings

Page 4: CS 106A, Lecture 8 - Stanford University

4

Plan For Today•Announcements•Recap–Parameters–Return

•RandomNumbers•TextProcessing–Characters–Strings

Page 5: CS 106A, Lecture 8 - Stanford University

5

Parameters

Parametersletyouprovideamethodsomeinformationwhenyouarecallingit.

Page 6: CS 106A, Lecture 8 - Stanford University

6

Return

Returnvaluesletyougivebacksomeinformationwhen

amethodisfinished.

Page 7: CS 106A, Lecture 8 - Stanford University

7

Methods = Toasters

parameter

Page 8: CS 106A, Lecture 8 - Stanford University

8

Methods = Toasters

parameter

Page 9: CS 106A, Lecture 8 - Stanford University

9

Methods = Toasters

Page 10: CS 106A, Lecture 8 - Stanford University

10

Methods = Toasters

Page 11: CS 106A, Lecture 8 - Stanford University

11

Methods = Toasters

return

Page 12: CS 106A, Lecture 8 - Stanford University

12

Example: readInt

int x = readInt(”Your guess? ");

Page 13: CS 106A, Lecture 8 - Stanford University

13

Example: readInt

int x = readInt(”Your guess? ");

We give readInt some information (the text to

print to the user)

We call readInt

Page 14: CS 106A, Lecture 8 - Stanford University

14

Example: readInt

int x = readInt(”Your guess? ");

When we include values in the parentheses of a method call, this means we are passing them as parameters to this

method.

Page 15: CS 106A, Lecture 8 - Stanford University

15

Example: readInt

int x = readInt(”Your guess? ");

When finished, readInt gives us information back (the user’s number) and we put it in x.

Page 16: CS 106A, Lecture 8 - Stanford University

16

Example: readInt

int x = readInt(”Your guess? ");

When we set a variable equal to a method, this tells Java to save the return value of the method in that variable.

Page 17: CS 106A, Lecture 8 - Stanford University

17

Plan For Today•Announcements•Recap–Parameters–Return

•RandomNumbers•TextProcessing–Characters–Strings

Page 18: CS 106A, Lecture 8 - Stanford University

18

Parameters Example: drawBox

private void drawBox(int width, int height) {// use width and height variables// to draw a box

}

Tells Java this method needs two ints in order to

execute.

Page 19: CS 106A, Lecture 8 - Stanford University

19

Parameters Example: drawBox

private void drawBox(int width, int height) {// use width and height variables// to draw a box

}

Inside drawBox, refer to the first parameter value

as width…

Page 20: CS 106A, Lecture 8 - Stanford University

20

Parameters Example: drawBox

private void drawBox(int width, int height) {// use width and height variables// to draw a box

}

…and the second parameter value as height.

Page 21: CS 106A, Lecture 8 - Stanford University

21

drawBox

drawBox(10, 4);

We give drawBox some information (the size of

the box we want)

We call drawBox

Page 22: CS 106A, Lecture 8 - Stanford University

22

drawBox

int width = readInt("Width? ");int height = readInt("Height? ");...

drawBox(width, height);

We give drawBox some information (the size of

the box we want)

We call drawBox

Page 23: CS 106A, Lecture 8 - Stanford University

23

drawBox

int width = readInt("Width? "); 7int height = readInt("Height? "); 4...

drawBox(width, height);

Page 24: CS 106A, Lecture 8 - Stanford University

24

drawBox

int width = readInt("Width? "); 7int height = readInt("Height? "); 4...

drawBox(width, height);7 4

Page 25: CS 106A, Lecture 8 - Stanford University

25

drawBox

int width = readInt("Width? "); 7int height = readInt("Height? "); 4...

drawBox(7, 4);

Page 26: CS 106A, Lecture 8 - Stanford University

26

drawBox

7 4

Second parameter to

drawBox

First parameter to drawBox

Page 27: CS 106A, Lecture 8 - Stanford University

27

drawBox

private void drawBox(int width, int height) {

7 4

Page 28: CS 106A, Lecture 8 - Stanford University

28

drawBox

private void drawBox(int width, int height) {// use width and height variables// to draw a box

}

7 4

Page 29: CS 106A, Lecture 8 - Stanford University

29

drawBox

private void drawBox(int width, int height) {...println(width); // prints 7println(height); // prints 4...

}

7 4

Page 30: CS 106A, Lecture 8 - Stanford University

30

Parameter Names

Parameternamesdonotaffectprogrambehavior.

Page 31: CS 106A, Lecture 8 - Stanford University

31

Parameter Namespublic void run() {

int width = readInt("Width? "); 7int height = readInt("Height? "); 4drawBox(width, height);

}

private void drawBox(int width, int height) {...

}

run

width height

7 4drawBox

width height

7 4

Page 32: CS 106A, Lecture 8 - Stanford University

32

Parameter Namespublic void run() {

int width = readInt("Width? "); 7int height = readInt("Height? "); 4drawBox(width, height);

}

private void drawBox(int w, int h) {...

}

run

width height

7 4drawBox

w h

7 4

Page 33: CS 106A, Lecture 8 - Stanford University

33

Plan For Today•Announcements•Recap–Parameters–Return

•RandomNumbers•TextProcessing–Characters–Strings

Page 34: CS 106A, Lecture 8 - Stanford University

34

Return Example: metersToCm

private double metersToCm(double meters) {...

}

When this method finishes, it will return a double.

Page 35: CS 106A, Lecture 8 - Stanford University

35

Return Example: metersToCm

private double metersToCm(double meters) {double centimeters = meters * 100;return centimeters;

}

Returns the value of this expression (centimeters).

Page 36: CS 106A, Lecture 8 - Stanford University

36

Return Example: metersToCm

public void run() {double cm = metersToCm(10);...

}

Page 37: CS 106A, Lecture 8 - Stanford University

37

Return Example: metersToCm

public void run() {double cm = metersToCm(10);...

}

Setting a variable equal to a method means we save the method’s return

value in that variable.

Page 38: CS 106A, Lecture 8 - Stanford University

38

Return Example: metersToCmpublic void run() {

double meters = readDouble("# meters? ”);...

double cm = metersToCm(meters);println(cm + " centimeters.");

}

private double metersToCm(double meters) {double centimeters = meters * 100;return centimeters;

}

Page 39: CS 106A, Lecture 8 - Stanford University

39

Return Example: metersToCmpublic void run() {

double meters = readDouble("# meters? ”);...

double cm = metersToCm(meters);println(cm + " centimeters.");

}

private double metersToCm(double meters) {double centimeters = meters * 100;return centimeters;

}

7

Page 40: CS 106A, Lecture 8 - Stanford University

40

Return Example: metersToCmpublic void run() {

double meters = readDouble("# meters? ”);...

double cm = metersToCm(meters);println(cm + " centimeters.");

}

private double metersToCm(double meters) {double centimeters = meters * 100;return centimeters;

}

7

7

Page 41: CS 106A, Lecture 8 - Stanford University

41

Return Example: metersToCmpublic void run() {

double meters = readDouble("# meters? ”);...

double cm = metersToCm(meters);println(cm + " centimeters.");

}

private double metersToCm(double meters) {double centimeters = meters * 100;return centimeters;

} 700

7

7

Page 42: CS 106A, Lecture 8 - Stanford University

42

Return Example: metersToCmpublic void run() {

double meters = readDouble("# meters? ”);...

double cm = metersToCm(meters);println(cm + " centimeters.");

}

700

7

Page 43: CS 106A, Lecture 8 - Stanford University

43

Return Values and Expressionspublic void run() {

double meters = readDouble("# meters? ”);println(metersToCm(meters) + " cm.");

}

private double metersToCm(double meters) {...

}

7

Page 44: CS 106A, Lecture 8 - Stanford University

44

Return Values and Expressionspublic void run() {

double meters = readDouble("# meters? ”);println(metersToCm(meters) + " cm.");

}

private double metersToCm(double meters) {...

}

700

You can use a method’s return value directly in an expression.

7

Page 45: CS 106A, Lecture 8 - Stanford University

45

Buggy Example!public void run() {

double meters = readDouble("# meters? ”);...

metersToCm(meters); // Does nothing!...

}

7

Page 46: CS 106A, Lecture 8 - Stanford University

46

Buggy Example!public void run() {

double meters = readDouble("# meters? ”);...

metersToCm(meters); // Does nothing!...

}

7

700

Page 47: CS 106A, Lecture 8 - Stanford University

47

private int max(int num1, int num2) {if(num1 >= num2) {

return num1;}return num2; // here only if num1 < num2

}

Return Stops Method Execution

Page 48: CS 106A, Lecture 8 - Stanford University

48

Returning Booleans

private boolean isEven(int number) {return number % 2 == 0;

}

Page 49: CS 106A, Lecture 8 - Stanford University

49

Returning Booleans

private boolean isEven(int number) {return number % 2 == 0;

}

56

Page 50: CS 106A, Lecture 8 - Stanford University

50

Returning Booleans

private boolean isEven(int number) {return number % 2 == 0;

}

56

true

Page 51: CS 106A, Lecture 8 - Stanford University

51

Returning Booleans

private boolean isEven(int number) {return number % 2 == 0;

}

// Examplepublic void run() {

if (isEven(2)) {...

}}

Page 52: CS 106A, Lecture 8 - Stanford University

52

Returning Booleans

private boolean isDivisibleBy(int a, int b) {return a % b == 0;

}

Page 53: CS 106A, Lecture 8 - Stanford University

53

Returning Booleans

private boolean isDivisibleBy(int a, int b) {return a % b == 0;

}

24 9

Page 54: CS 106A, Lecture 8 - Stanford University

54

Returning Booleans

private boolean isDivisibleBy(int a, int b) {return a % b == 0;

}

24 9

false

Page 55: CS 106A, Lecture 8 - Stanford University

55

Returning Booleans

private boolean isDivisibleBy(int a, int b) {return a % b == 0;

}

// Examplepublic void run() {

if (isDivisibleBy(4, 2)) {...

}}

Page 56: CS 106A, Lecture 8 - Stanford University

56

Factorial Code Walkthrough

Seenextslides

Page 57: CS 106A, Lecture 8 - Stanford University

57

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}i

4

Page 58: CS 106A, Lecture 8 - Stanford University

58

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0i

Page 59: CS 106A, Lecture 8 - Stanford University

59

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0i

Page 60: CS 106A, Lecture 8 - Stanford University

60

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0i

Page 61: CS 106A, Lecture 8 - Stanford University

61

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0i

Page 62: CS 106A, Lecture 8 - Stanford University

62

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

result0n i

Page 63: CS 106A, Lecture 8 - Stanford University

63

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

1result0n i

Page 64: CS 106A, Lecture 8 - Stanford University

64

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

1result0n 1i

Page 65: CS 106A, Lecture 8 - Stanford University

65

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

1result0n 1i

Page 66: CS 106A, Lecture 8 - Stanford University

66

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

1result0n 1i

Page 67: CS 106A, Lecture 8 - Stanford University

67

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0i

1

Page 68: CS 106A, Lecture 8 - Stanford University

68

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0i

1

0! = 1

Page 69: CS 106A, Lecture 8 - Stanford University

69

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}1i

0! = 1

Page 70: CS 106A, Lecture 8 - Stanford University

70

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}1i

0! = 1

Page 71: CS 106A, Lecture 8 - Stanford University

71

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}1i

0! = 1

Page 72: CS 106A, Lecture 8 - Stanford University

72

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}1i

0! = 1

Page 73: CS 106A, Lecture 8 - Stanford University

73

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

result1n i

0! = 1

Page 74: CS 106A, Lecture 8 - Stanford University

74

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

1result1n i

0! = 1

Page 75: CS 106A, Lecture 8 - Stanford University

75

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

1result1n 1i

0! = 1

Page 76: CS 106A, Lecture 8 - Stanford University

76

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

1result1n 1i

0! = 1

Page 77: CS 106A, Lecture 8 - Stanford University

77

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

1result1n 1i

0! = 1

Page 78: CS 106A, Lecture 8 - Stanford University

78

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

1result1n 2i

0! = 1

Page 79: CS 106A, Lecture 8 - Stanford University

79

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

1result1n 2i

0! = 1

Page 80: CS 106A, Lecture 8 - Stanford University

80

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}0

i

private int factorial(int n) {int result = 1;for (int i = 1; i <= n; i++) {

result *= i;}return result;

}

1result1n 2i

0! = 1

Page 81: CS 106A, Lecture 8 - Stanford University

81

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}1i

1

0! = 1

Page 82: CS 106A, Lecture 8 - Stanford University

82

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}1i

1

0! = 11! = 1

Page 83: CS 106A, Lecture 8 - Stanford University

83

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}2i

0! = 11! = 1

Page 84: CS 106A, Lecture 8 - Stanford University

84

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}2i

0! = 11! = 1

Page 85: CS 106A, Lecture 8 - Stanford University

85

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}2i

0! = 11! = 1

Page 86: CS 106A, Lecture 8 - Stanford University

86

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}2i

0! = 11! = 1

Page 87: CS 106A, Lecture 8 - Stanford University

87

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}2i

2

0! = 11! = 1

Page 88: CS 106A, Lecture 8 - Stanford University

88

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}2i

2

0! = 11! = 12! = 2

Page 89: CS 106A, Lecture 8 - Stanford University

89

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}3i

0! = 11! = 12! = 2

Page 90: CS 106A, Lecture 8 - Stanford University

90

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}3i

0! = 11! = 12! = 2

Page 91: CS 106A, Lecture 8 - Stanford University

91

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}3i

0! = 11! = 12! = 2

Page 92: CS 106A, Lecture 8 - Stanford University

92

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}3i

0! = 11! = 12! = 2

Page 93: CS 106A, Lecture 8 - Stanford University

93

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}3i

6

0! = 11! = 12! = 2

Page 94: CS 106A, Lecture 8 - Stanford University

94

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}3i

6

0! = 11! = 12! = 23! = 6

Page 95: CS 106A, Lecture 8 - Stanford University

95

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}4i

0! = 11! = 12! = 23! = 6

Page 96: CS 106A, Lecture 8 - Stanford University

96

public void run() {for(int i = 0; i < MAX_NUM; i++) {

println(i + "! = " + factorial(i));}

}4i

0! = 11! = 12! = 23! = 6

Page 97: CS 106A, Lecture 8 - Stanford University

97

Plan For Today•Announcements•Recap–Parameters–Return

•RandomNumbers•TextProcessing–Characters–Strings

Page 98: CS 106A, Lecture 8 - Stanford University

98

RandomGenerator• import acm.util.*;

// random number from 0-9 inclusiveint digit = RandomGenerator.getInstance().nextInt(0, 9);println(digit);

// prints "hello!" between 3-6 timesint times = RandomGenerator.getInstance().nextInt(3, 6);for (int i = 0; i < times; i++) {

println("hello!");}

Method DescriptionRandomGenerator.getInstance().nextInt(min, max) arandomintegerinthe

givenrange,inclusive

Page 99: CS 106A, Lecture 8 - Stanford University

99

RandomGeneratorThe RandomGenerator class defines the following methods:

int nextInt(int low, int high)Returns a random int between low and high, inclusive.

int nextInt(int n)Returns a random int between 0 and n-1.

double nextDouble(double low, double high)Returns a random double d in the range low ≤ d < high.

double nextDouble()Returns a random double d in the range 0 ≤ d < 1.

boolean nextBoolean()Returns a random boolean value, which is true 50 percent of the time.

boolean nextBoolean(double p)Returns a random boolean, which is true with probability p, where 0 ≤ p ≤ 1.

Color nextColor()Returns a random color.

Page 100: CS 106A, Lecture 8 - Stanford University

100

Extra: Dice exercise• WriteaconsoleprogramRollTwoDice thatrepeatedlyrollstwo6-sideddiceuntiltheyarriveatagivendesiredsum.

Desired sum? 93 and 4 = 72 and 1 = 35 and 5 = 106 and 2 = 86 and 5 = 114 and 5 = 9

• TrysolvingthisonyourownonCodeStepByStep!

RollTwoDice

Page 101: CS 106A, Lecture 8 - Stanford University

101

Plan For Today•Announcements•Recap–Parameters–Return

•RandomNumbers•TextProcessing–Characters–Strings

Page 102: CS 106A, Lecture 8 - Stanford University

102

Text Processing

Page 103: CS 106A, Lecture 8 - Stanford University

103

Goal

After learning text processing, we will be able to write our own encryption program!

Page 104: CS 106A, Lecture 8 - Stanford University

104

Plan For Today•Announcements•Recap–Parameters–Return

•RandomNumbers•TextProcessing–Characters–Strings

Page 105: CS 106A, Lecture 8 - Stanford University

105

CharAchar isavariabletypethatrepresentsasinglecharacteror“glyph”.

char letterA = 'A';char plus = '+';char zero = '0';char space = ' ';char newLine = '\n';char tab = '\t';char singleQuote = '\'';char backSlash = '\\';

Page 106: CS 106A, Lecture 8 - Stanford University

106

CharUnderthehood,Javarepresentseachchar asaninteger (its“ASCIIvalue”).

•Uppercaselettersaresequentiallynumbered•Lowercaselettersaresequentiallynumbered•Digitsaresequentiallynumbered

char uppercaseA = 'A'; // Actually 65char lowercaseA = 'a'; // Actually 97char zeroDigit = '0'; // Actually 48

Page 107: CS 106A, Lecture 8 - Stanford University

107

Char Math!WecantakeadvantageofJavarepresentingeachchar asaninteger (its“ASCIIvalue”):

boolean areEqual = 'A' == 'A'; // trueboolean earlierLetter = 'f' < 'c'; // falsechar uppercaseB = 'A' + 1;int diff = 'c' - 'a'; // 2int numLettersInAlphabet = 'z' – 'a' + 1;// orint numLettersInAlphabet = 'Z' – 'A' + 1;

Page 108: CS 106A, Lecture 8 - Stanford University

108

Char Math!WecantakeadvantageofJavarepresentingeachchar asaninteger (its“ASCIIvalue”):

// prints out every characterfor (char ch = 'a'; ch <= 'z'; ch++) {

print(ch);}

Page 109: CS 106A, Lecture 8 - Stanford University

109

Char Math!Noteveryintegermapstoacharacter.Sowhenyouhaveanexpressionwithints andchars,Javapicksint asthemostexpressivetype.

'A' + 1 // evaluates to 66 (int)'c' + (2*5) – 1 // evaluates to 108

Wecanmakeitacharbyputtingitinacharvariable.char uppercaseB = 'A' + 1;// orchar uppercaseB = 66;

Page 110: CS 106A, Lecture 8 - Stanford University

110

Side Note: Type-castingIfwewanttoforceJavatotreatanexpressionasaparticulartype,wecanalsocastit tothattype.

'A' + 1 // evaluates to 66 (int)(char)('A' + 1) // evaluates to 'B' (char)

1 / 2 // evaluates to 0 (int)(double)1 / 2 // evaluates to 0.5 (double)1 / (double)2 // evaluates to 0.5 (double)

Page 111: CS 106A, Lecture 8 - Stanford University

111

Character MethodsTherearesomehelpfulbuilt-inJavamethodstomanipulatechars.

char lowercaseA = 'a';char uppercaseA = Character.toUpperCase(lowercaseA);

char plus = '+';if (Character.isLetter(plus)) {

...}

Page 112: CS 106A, Lecture 8 - Stanford University

112

Character MethodsMethod Description

Character.isDigit(ch) trueifch is'0' through'9'

Character.isLetter(ch) trueifch is'a' through'z' or'A' through'Z'

Character.isLetterOrDigit(ch) trueifch is'a' through'z','A' through'Z' or '0' through'9'

Character.isLowerCase(ch) trueifch is'a' through'z'

Character.isUpperCase(ch) trueifch is'A' through'Z'

Character.toLowerCase(ch) returnslowercaseequivalentofaletter

Character.toUpperCase(ch) returnsuppercaseequivalentofaletter

Character.isWhitespace(ch) trueifch isaspace,tab,newline,etc.

Remember: these returnthe new char, they cannot modify an existing char!

Page 113: CS 106A, Lecture 8 - Stanford University

113

Character MethodsRemembertoalwayssavethereturnvalueofCharactermethods!

char lowercaseA = 'a';Character.toUpperCase(lowercaseA); // Does nothing!println(lowercaseA); // prints ’a’!

char uppercaseA = Character.toUpperCase(lowercaseA); // OK

println(uppercaseA); // prints ’A’!

Page 114: CS 106A, Lecture 8 - Stanford University

114

Plan For Today•Announcements•Recap–Parameters–Return

•RandomNumbers•TextProcessing–Characters–Strings

Page 115: CS 106A, Lecture 8 - Stanford University

115

StringsAString isavariabletyperepresentingasequenceofcharacters.

String text = "Hi parents!";

– Eachcharacterisassignedanindex,goingfrom0tolength-1– Thereisachar ateachindex

index 0 1 2 3 4 5 6 7 8 9 10

character 'H' 'i' ' ' 'p' 'a' 'r' 'e' 'n' 't' 's' '!'

Page 116: CS 106A, Lecture 8 - Stanford University

116

String str = "Hello, world!";String empty = "";println(str);

// Read in text from the userString name = readLine("What is your name? ");

// String concatenation (using “+”)String message = 2 + " cool " + 2 + " handle";int x = 2;println("x has the value " + x);

Creating Strings

Page 117: CS 106A, Lecture 8 - Stanford University

117

String str = "Hello, world!";

// Lengthint strLength = str.length(); // 13

// Access individual characterschar firstLetter = str.charAt(0);char lastLetter = str.charAt(strLength – 1);char badTimes = str.charAt(strLength); // ERROR

Common String Operations

Page 118: CS 106A, Lecture 8 - Stanford University

118

SubstringsAsubstring isasubsetofastring.

String str = "Hello, world!";String hello = str.substring(0, 5);

0 1 2 3 4 5 6 7 8 9 10 11 12'H' 'e' 'l' 'l' 'o' ',' ' ' 'w' 'o' 'r' 'l' 'd' '!'

Page 119: CS 106A, Lecture 8 - Stanford University

119

SubstringsAsubstring isasubsetofastring.

String str = "Hello, world!";String worldExclm = str.substring(7, 13);

0 1 2 3 4 5 6 7 8 9 10 11 12'H' 'e' 'l' 'l' 'o' ',' ' ' 'w' 'o' 'r' 'l' 'd' '!'

Page 120: CS 106A, Lecture 8 - Stanford University

120

SubstringsAsubstring isasubsetofastring.

String str = "Hello, world!";String worldExclm = str.substring(7); // to end

0 1 2 3 4 5 6 7 8 9 10 11 12'H' 'e' 'l' 'l' 'o' ',' ' ' 'w' 'o' 'r' 'l' 'd' '!'

Page 121: CS 106A, Lecture 8 - Stanford University

121

String MethodsMethodname Description

s.length() numberofcharactersinthisstring

s.charAt(index) charatthegivenindex

s.indexOf(str) indexwherethestartofthegivenstringappearsinthisstring(-1ifnotfound)

s.substring(index1, index2)ors.substring(index1)

thecharactersinthisstringfromindex1 (inclusive)toindex2 (exclusive);ifindex2 isomitted,goesuntilend

s.toLowerCase() anewstringwithalllowercaseletterss.toUpperCase() anewstringwithalluppercaseletters

• Thesemethodsarecalledusingdotnotation:

String className = "CS 106A yay!";println(className.length()); // 12

Page 122: CS 106A, Lecture 8 - Stanford University

122

Strings are ImmutableOnceyoucreateaString,itscontentscannotbechanged.

// Cannot change individual chars in the stringString typo = "Hello, warld!”;

TochangeaString,youmustcreateanew Stringcontainingthevalueyouwant(e.g.usingStringmethods).

Page 123: CS 106A, Lecture 8 - Stanford University

123

Strings are ImmutableString className = "cs 106a";className.toUpperCase(); // does nothing!

className = className.toUpperCase(); // ✔println(className); // CS 106A

Page 124: CS 106A, Lecture 8 - Stanford University

124

Comparing StringsString greeting = "Hello!”;if (greeting == "Hello!") { // Doesn’t work!

...}

// Instead:if (greeting.equals("Hello!")) {

...}

Always use .equals instead of == and !=

Page 125: CS 106A, Lecture 8 - Stanford University

125

Comparing StringsMethod Description

s1.equals(s2) whethertwostringscontainthesamecharacters

s1.equalsIgnoreCase(s2) whethertwostringscontainthesamecharacters,ignoringuppervs.lowercase

s1.startsWith(s2) whethers1 containss2’scharactersatstart

s1.endsWith(s2) whethers1 containss2’scharactersatend

s1.contains(s2) whethers2 isfoundwithins1

Page 126: CS 106A, Lecture 8 - Stanford University

126

Looping Over StringsAcommonStringprogrammingpatternisloopingoverastringandoperatingoneachcharacter.

String str = "Hello!";for (int i = 0; i < str.length(); i++) {

char ch = str.charAt(i);// Do something with ch here

}

Page 127: CS 106A, Lecture 8 - Stanford University

127

Looping Over StringsAcommonStringprogrammingpatternisloopingoverastringandoperatingoneachcharacter.

// Prints out each letter on a separate lineString str = "Hello!";for (int i = 0; i < str.length(); i++) {

char ch = str.charAt(i);println(ch);

}

Page 128: CS 106A, Lecture 8 - Stanford University

128

Looping Over StringsAcommonStringprogrammingpatternisloopingoverastringandoperatingoneachcharacter.

// Creates a new String in all capsString str = "Hello!";String newStr = "";for (int i = 0; i < str.length(); i++) {

char ch = str.charAt(i);newStr += Character.toUpperCase(ch);

}println(newStr); // HELLO!

Page 129: CS 106A, Lecture 8 - Stanford University

129

Recap•Recap–Parameters–Return

•RandomNumbers•TextProcessing–Characters–Strings

Nexttime:problem-solvingwithStrings