# Comparable Interface

## 11. All the Rules

**Answer:**

"bugbear" .compareTo ("Bugbear") positive "rugrat" .compareTo ("rugRat") positive "ant" .compareTo ("turtle") negative "toadstool" .compareTo ("total") negative "ABCDEFG" .compareTo ("ABcD") negative "roadrunner" .compareTo ("roadkill") positive

# All the Rules

Here are all the rules for comparing strings:

Rule 1:If`A.compareTo(B) == 0`

, then`A`

and`B`

are the same length (counting all characters, including blanks and punctuation) and each character in`A`

is identical (including case) to the character in`B`

at the same location.

Rule 2:Otherwise, if string`A`

is a prefix of string`B`

, then`A.compareTo(B) < 0`

. If`B`

is a prefix of string`A`

, then`A.compareTo(B) > 0`

.

Rule 3:Otherwise, find the first differing pair of characters in the strings`A`

and`B`

. Call them`Achar`

and`Bchar`

. Then`A.compareTo(B)`

is negative if`Achar`

comes before`Bchar`

in the alphabet used by Java (and otherwise is positive).

The rules about what character comes first in the alphabet depend on what country you are in. This is one of the aspects of **internationalization**, which is the subject of customizing programs for use in different countries. Lets not worry about that.

**Question 11:**

Of course, you would like to practice this: