Data Structures and
Algorithms in Java, 6e
Michael Goodrich,
Roberto Tamassia (All
Chapters)
, Chapter
1 Java Primer XM
Hints and Solutions XM XM
Reinforcement
R-
1.1) Hint Use the code templates provided in the Simple Input an
X M XM X M X M X M X M X M X M X M X M X M
d Output section.
XM XM
R-1.2) Hint You may read about cloning in Section 3.6.
XM XM XM XM XM XM XM XM XM
R-
1.2) Solution Since, after the clone, A[4] and B[4] are both pointing to th
XM XM XM XM XM XM X
M XM X
M XM XM XM XM
e same GameEntry object, B[4].score is now 550.
XM XM XM XM XM XM XM
R-1.3) Hint The modulus operator could be useful here.
XM XM XM XM XM XM XM XM
R-1.3) Solution XM
public boolean isMultiple(long n, long m) {
XM XM XM XM XM XM
return (n%m == 0); XM XM XM
}
R-1.4) Hint Use bit operations.
XM XM XM XM
R-1.4) Solution XM
public boolean isEven(int i) {
XM XM XM XM
return (i & 1 == 0); XM XM XM XM XM
}
R-
1.5) Hint The easy solution uses a loop, but there is also a formula for t
XM XM XM XM XM XM XM XM XM XM XM XM XM XM XM
his, which is discussed in Chapter 4.
XM XM XM XM XM XM
R-1.5) Solution XM
public int sumToN(int n) {
XM XM XM XM
int total = 0;
XM XM XM
for (int j=1; j <= n; j++) tota
XM XM XM XM XM XM XM
l += j; XM XM
return total; X M
}
,2 Chapter 1. Java Prime XM X M XM
r
R-1.6) Hint The easy thing to do is to write a loop.
XM XM XM XM XM XM XM XM XM XM XM
R-1.6) Solution
XM
public int sumOdd(int n) {
XM XM XM XM
int total = 0;
XM XM XM
for (int j=1; j <= n; j += 2) t
XM XM XM XM XM XM XM XM XM
otal += j; XM XM
return total; X M
}
R-1.7) Hint The easy thing to do is to write a loop.
XM XM XM XM XM XM XM XM XM XM XM
R-1.7) Solution
XM
public int sumSquares(int n) {
XM XM XM XM
int total = 0;
XM XM XM
for (int j=1; j <= n; j++) tota
XM XM XM XM XM XM XM
l += j∗j;
XM XM
return total; X M
}
R-1.8) Hint You might use a switch statement.
XM XM XM XM XM XM XM
R-1.8) Solution
XM
public int numVowels(String text) {
XM XM XM XM
int total = 0;
XM XM XM
for (int j=0; j < text.length(); j++) {
XM XM XM XM XM XM XM
switch (text.charAt(j)) { XM XM
case 'a': XM
case 'A': XM
case 'e': XM
case 'E': XM
case 'i': XM
case 'I': XM
case 'o': XM
case 'O': XM
case 'u': XM
case 'U': tot XM XM
al += 1; XM XM
}
}
return total; X M
}
R-1.9) Hint Consider each character one at a time.
XM XM XM XM XM XM XM XM
, 3
R-1.10) Hint Consider using get and set methods for accessing and mod-
XM XM XM XM XM XM XM XM XM XM XM
ifying the values.
XM XM XM
R-
1.11) Hint The traditional way to do this is to use setFoo methods,
X M XM XM X M X M X M X M X M X M XM X M X M
where Foo is the value to be modified.
XM XM XM XM XM XM XM XM
R-1.11) Solution XM
public void setLimit(int lim) { XM XM XM XM
limit = lim; XM XM
}
R-1.12) Hint Use a conditional statement.
XM XM XM XM XM
R-1.12) Solution XM
public void makePayment(double amount) {
XM XM XM XM
if (amount > 0) balanc
XM XM XM XM
e − = amount; XM XM
}
R-1.13) Hint Try to make wallet[1] go over its limit.
XM XM XM XM XM XM XM XM XM
R-1.13) Solution XM
for (int val=1; val <= 58; val++) { wallet[0].
XM XM XM XM XM XM XM XM
charge(3∗val); wallet[1].charge(2∗val); w XM XM
allet[2].charge(val);
}
This change will cause wallet[1] to attempt to go over its limit.
XM XM XM XM XM XM XM XM XM XM XM
Creativity
C-1.14) Hint The Java method does not need to be passed the value of n
XM XM XM XM XM XM XM XM XM XM XM XM XM XM
as an argument.
XM XM
C-
1.15) Hint Note that the Java program has a lot more syntax require-
XM XM XM XM XM XM XM XM XM XM XM XM
ments.
XM
C-
1.16) Hint Create an enum type of all operators, including =, and use a
XM XM XM XM XM XM XM XM XM XM XM XM XM
n array of these types in a switch statement nested inside for-
XM XM XM XM XM XM XM XM XM XM XM
loops to try all possibilities.
XM XM XM XM
C-
1.17) Hint Note that at least one of the numbers in the pair must be ev
XM XM XM XM XM XM XM XM XM XM XM XM XM XM XM
en.
C-1.17) Solution XM