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