📖 Scenario: You are creating a simple program to compare two names to see if they are the same or which one comes first in alphabetical order.
🎯 Goal: Build a Kotlin program that compares two strings using equals and compareTo methods and shows the results.
📋 What You'll Learn
Create two string variables with exact names and values
Create a boolean variable to store the result of equals comparison
Use compareTo to find the alphabetical order difference
Print the results exactly as instructed
💡 Why This Matters
🌍 Real World
String comparison is useful in sorting names, searching text, and validating user input in many apps.
💼 Career
Understanding string comparison helps in writing code for data processing, user authentication, and UI sorting features.
Progress0 / 4 steps
1
Create two string variables
Create two string variables called name1 and name2 with the exact values "Alice" and "Bob" respectively.
Kotlin
Hint
Use val to create variables and assign the exact string values.
2
Create a boolean variable for equals comparison
Create a boolean variable called areEqual that stores the result of name1.equals(name2).
Kotlin
Hint
Use the equals method to compare name1 and name2.
3
Compare strings alphabetically using compareTo
Create an integer variable called compareResult that stores the result of name1.compareTo(name2).
Kotlin
Hint
Use the compareTo method to compare name1 and name2 alphabetically.
4
Print the comparison results
Print the values of areEqual and compareResult using two separate println statements.
Kotlin
Hint
Use println to show the boolean and integer results on separate lines.
Practice
(1/5)
1. Which Kotlin method should you use to check if two strings have exactly the same characters and case? val a = "Hello" val b = "hello"
easy
A. a.equals(b)
B. a.compareTo(b)
C. a === b
D. a.equals(b, ignoreCase = true)
Solution
Step 1: Understand equals() method
The equals() method checks if two strings are exactly the same including case.
Step 2: Compare equals() with other options
compareTo() returns an order number, === checks reference equality (not content), equals(ignoreCase=true) ignores case, so only equals() matches exact case-sensitive check.
Final Answer:
a.equals(b) -> Option A
Quick Check:
Use equals() for exact string match [OK]
Hint: Use equals() for exact case-sensitive string match [OK]
Common Mistakes:
Using compareTo() to check equality
Assuming === checks content equality
Using equals(ignoreCase=true) when case matters
2. Which of the following is the correct syntax to compare two strings str1 and str2 for equality ignoring case in Kotlin?
easy
A. str1.equals(str2, ignoreCase = true)
B. str1.compareTo(str2, ignoreCase = true)
C. str1.equals(str2)
D. str1 == str2
Solution
Step 1: Recall equals() with ignoreCase parameter
In Kotlin, equals() can take ignoreCase=true to compare strings ignoring case differences.
Step 2: Check other options
A: equals() without ignoreCase is case-sensitive, B: compareTo(ignoreCase=true) returns Int not Boolean, D: == is case-sensitive.
Final Answer:
str1.equals(str2, ignoreCase = true) -> Option A
Quick Check:
Use equals(ignoreCase=true) to ignore case [OK]
Hint: Use equals(ignoreCase=true) to compare ignoring case [OK]
Common Mistakes:
Using compareTo(ignoreCase=true) directly (returns Int, not Boolean)
Using == which is case-sensitive
Forgetting to set ignoreCase=true
3. What will be the output of the following Kotlin code?
val s1 = "apple" val s2 = "banana" println(s1.compareTo(s2))
medium
A. A positive number
B. A negative number
C. 0
D. Compilation error
Solution
Step 1: Understand compareTo() behavior
compareTo() returns a negative number if the first string is lexicographically less than the second.
Step 2: Compare "apple" and "banana" lex order
"apple" comes before "banana" alphabetically, so compareTo returns a negative number.
Final Answer:
A negative number -> Option B
Quick Check:
"apple" < "banana" means compareTo() < 0 [OK]
Hint: compareTo() < 0 means first string is before second [OK]
Common Mistakes:
Assuming compareTo() returns boolean
Confusing positive and negative return values
Thinking compareTo() returns 0 for different strings
4. The following Kotlin code is intended to check if two strings are equal ignoring case, but it does not compile. What is the error?
val a = "Test" val b = "test" if (a.compareTo(b, ignoreCase = true)) { println("Equal") } else { println("Not Equal") }
medium
A. Missing parentheses in if condition
B. ignoreCase is not a valid parameter for compareTo()
C. Strings cannot be compared with compareTo()
D. compareTo() returns Int, cannot be used as Boolean
Solution
Step 1: Check compareTo() return type
compareTo() returns an Int, not a Boolean, so it cannot be used directly in if condition.
Step 2: Understand how to check equality with compareTo()
To check equality ignoring case, compareTo() == 0 should be used, not just compareTo() alone.
Final Answer:
compareTo() returns Int, cannot be used as Boolean -> Option D
Quick Check:
compareTo() returns Int, use == 0 to check equality [OK]
Hint: compareTo() returns Int; compare with 0 for equality [OK]
Common Mistakes:
Using compareTo() directly as Boolean
Forgetting to compare result with 0
Assuming ignoreCase is invalid parameter (it is valid)
5. You want to sort a list of strings ignoring case in Kotlin. Which code snippet correctly sorts the list val fruits = listOf("Banana", "apple", "Cherry") ignoring case?
hard
A. fruits.sortedBy { it }
B. fruits.sortedBy(String.CASE_INSENSITIVE_ORDER)
C. fruits.sortedWith(String.CASE_INSENSITIVE_ORDER)
D. fruits.sorted()
Solution
Step 1: Understand sorting ignoring case
To sort strings ignoring case, use a comparator that compares strings case-insensitively.
Step 2: Check options for case-insensitive sorting
A and D are case-sensitive. C: sortedBy expects key selector, not Comparator (compile error). B uses built-in case-insensitive Comparator correctly.
Final Answer:
fruits.sortedWith(String.CASE_INSENSITIVE_ORDER) -> Option C
Quick Check:
Use sortedWith(String.CASE_INSENSITIVE_ORDER) for case-insensitive sort [OK]
Hint: Use sortedWith(String.CASE_INSENSITIVE_ORDER) to ignore case in sort [OK]
Common Mistakes:
Using sorted() which is case-sensitive
Using sortedBy { it } which is case-sensitive
Confusing sortedBy (selector) with sortedWith (Comparator)
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.