Bird
Raised Fist0
Kotlinprogramming~20 mins

Elvis operator deep usage in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Elvis Operator Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Elvis operator with nested nullables
What is the output of this Kotlin code snippet?
Kotlin
val a: String? = null
val b: String? = "Hello"
val c: String? = null

val result = a ?: b ?: c ?: "Default"
println(result)
Anull
BDefault
CHello
DCompilation error
Attempts:
2 left
💡 Hint
The Elvis operator returns the first non-null value from left to right.
❓ Predict Output
intermediate
2:00remaining
Elvis operator with function calls
What will be printed by this Kotlin code?
Kotlin
fun getName(): String? = null
fun getDefaultName(): String = "Guest"

val name = getName() ?: getDefaultName()
println(name)
Anull
BGuest
CCompilation error
DgetDefaultName
Attempts:
2 left
💡 Hint
Elvis operator calls the right side only if the left side is null.
❓ Predict Output
advanced
2:00remaining
Elvis operator with smart casting and let
What is the output of this Kotlin code?
Kotlin
val input: String? = "Kotlin"

val length = input?.let { it.length } ?: -1
println(length)
A6
B-1
Cnull
DCompilation error
Attempts:
2 left
💡 Hint
The safe call with let executes only if input is not null.
❓ Predict Output
advanced
2:00remaining
Elvis operator with multiple nullable types and side effects
What will be printed by this Kotlin code?
Kotlin
var count = 0

fun getFirst(): String? {
    count++
    return null
}

fun getSecond(): String? {
    count++
    return "Second"
}

val result = getFirst() ?: getSecond() ?: "Default"
println("$result $count")
ADefault 1
BSecond 1
CDefault 2
DSecond 2
Attempts:
2 left
💡 Hint
Elvis operator evaluates left to right and stops at first non-null.
❓ Predict Output
expert
3:00remaining
Complex Elvis operator with nested expressions and nullables
What is the output of this Kotlin code?
Kotlin
data class User(val name: String?, val nickname: String?)

fun getUser(): User? = User(null, "Nick")

val displayName = getUser()?.name ?: getUser()?.nickname ?: "Unknown"
println(displayName)
ANick
BUnknown
CCompilation error
Dnull
Attempts:
2 left
💡 Hint
Elvis operator chains check for non-null values from left to right.

Practice

(1/5)
1.

What does the Elvis operator ?: do in Kotlin?

easy
A. Checks if two values are equal.
B. Returns the left value if it is not null; otherwise returns the right value.
C. Converts a value to a nullable type.
D. Throws an exception if the left value is null.

Solution

  1. Step 1: Understand the Elvis operator purpose

    The Elvis operator ?: is used to provide a default value when the left side is null.
  2. Step 2: Analyze the behavior

    If the left value is not null, it returns that value; otherwise, it returns the right value.
  3. Final Answer:

    Returns the left value if it is not null; otherwise returns the right value. -> Option B
  4. Quick Check:

    Elvis operator returns left if not null else right [OK]
Hint: Elvis operator picks left if not null, else right [OK]
Common Mistakes:
  • Thinking it compares two values
  • Assuming it throws exceptions
  • Confusing it with null checks
2.

Which of the following is the correct syntax to use the Elvis operator in Kotlin?

val result = value1 ??: value2
easy
A. val result = value1 ?: value2
B. val result = value1 ? value2
C. val result = value1 :: value2
D. val result = value1 ?:: value2

Solution

  1. Step 1: Identify the correct Elvis operator syntax

    The Elvis operator in Kotlin is written as ?: without spaces.
  2. Step 2: Match the syntax with options

    val result = value1 ?: value2 uses ?: correctly, while others use invalid or incorrect symbols.
  3. Final Answer:

    val result = value1 ?: value2 -> Option A
  4. Quick Check:

    Elvis operator syntax is ?: [OK]
Hint: Elvis operator is always ?: with no spaces [OK]
Common Mistakes:
  • Using single question mark ? instead of ?:
  • Using double colon :: by mistake
  • Adding extra colons or spaces
3.

What is the output of the following Kotlin code?

val a: String? = null
val b: String? = "Hello"
val c: String? = null

val result = a ?: b ?: c ?: "Default"
println(result)
medium
A. Hello
B. null
C. Default
D. Compilation error

Solution

  1. Step 1: Evaluate the chained Elvis operators

    Variable a is null, so Elvis operator moves to b. b is "Hello", which is not null.
  2. Step 2: Determine the final value

    Since b is not null, result is assigned "Hello" and the rest is ignored.
  3. Final Answer:

    Hello -> Option A
  4. Quick Check:

    Chained Elvis picks first non-null: Hello [OK]
Hint: Chained Elvis returns first non-null value [OK]
Common Mistakes:
  • Assuming it returns null if first is null
  • Ignoring chaining and picking last value
  • Thinking it causes a compile error
4.

Identify the error in this Kotlin code snippet using the Elvis operator:

val x: String? = null
val y: String = x ?: null
medium
A. Elvis operator cannot be used with nullable types
B. No error, code is correct
C. Variable x should not be nullable
D. Cannot assign null to non-nullable type String

Solution

  1. Step 1: Analyze variable types and assignment

    Variable y is declared as non-nullable String, but x ?: null can be null.
  2. Step 2: Understand Kotlin's null safety rules

    Assigning null to a non-nullable type causes a compilation error.
  3. Final Answer:

    Cannot assign null to non-nullable type String -> Option D
  4. Quick Check:

    Non-nullable cannot hold null [OK]
Hint: Non-nullable vars cannot be assigned null [OK]
Common Mistakes:
  • Thinking Elvis operator changes nullability
  • Assuming nullable can be assigned to non-nullable
  • Ignoring Kotlin's strict null safety
5.

Given the following Kotlin code, what will be the output?

fun getName(user: Map): String {
    return user["firstName"] ?: user["nickname"] ?: user["lastName"] ?: "Anonymous"
}

val user1 = mapOf("firstName" to null, "nickname" to null, "lastName" to "Smith")
println(getName(user1))
hard
A. Anonymous
B. Compilation error
C. Smith
D. null

Solution

  1. Step 1: Evaluate the map values in order

    firstName and nickname are null, so Elvis operator moves to lastName, which is "Smith".
  2. Step 2: Determine the returned value

    Since lastName is not null, the function returns "Smith".
  3. Final Answer:

    Smith -> Option C
  4. Quick Check:

    Elvis chain returns first non-null: Smith [OK]
Hint: Elvis chains pick first non-null map value [OK]
Common Mistakes:
  • Assuming it returns Anonymous despite lastName present
  • Confusing null with string "null"
  • Thinking map access causes error
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard