Bird
Raised Fist0
Kotlinprogramming~20 mins

Why enums constrain values in Kotlin - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Enum Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of enum usage in Kotlin
What is the output of this Kotlin code that uses an enum to restrict values?
Kotlin
enum class Direction { NORTH, SOUTH, EAST, WEST }

fun main() {
    val dir = Direction.NORTH
    println("Direction is: $dir")
}
ADirection is: 0
BDirection is: North
CDirection is: NORTH
DCompilation error
Attempts:
2 left
💡 Hint
Remember enums print their name exactly as declared.
🧠 Conceptual
intermediate
1:30remaining
Why enums restrict values
Why do enums in Kotlin constrain the possible values a variable can have?
ABecause enums are mutable and can change values at runtime.
BBecause enums allow any string value to be assigned.
CBecause enums automatically convert values to integers.
DBecause enums define a fixed set of constants, preventing invalid values.
Attempts:
2 left
💡 Hint
Think about how enums limit choices.
🔧 Debug
advanced
2:00remaining
Identify the error with enum assignment
What error occurs when you try to assign a value not defined in the enum?
Kotlin
enum class Color { RED, GREEN, BLUE }

fun main() {
    val c: Color = Color.YELLOW
    println(c)
}
ACompilation error: Unresolved reference: YELLOW
BRuntime error: IllegalArgumentException
CPrints 'YELLOW' without error
DCompilation error: Type mismatch
Attempts:
2 left
💡 Hint
Check if the enum contains the value YELLOW.
❓ Predict Output
advanced
1:30remaining
Output when using enum ordinal
What is the output of this Kotlin code using enum ordinal values?
Kotlin
enum class Size { SMALL, MEDIUM, LARGE }

fun main() {
    val s = Size.MEDIUM
    println(s.ordinal)
}
A1
B2
CCompilation error
D0
Attempts:
2 left
💡 Hint
Ordinal starts counting from zero.
🚀 Application
expert
2:30remaining
Using enums to validate input
Given this Kotlin enum and function, what will be the output when calling validateDirection("UP")?
Kotlin
enum class Direction { UP, DOWN, LEFT, RIGHT }

fun validateDirection(input: String): String {
    return try {
        val dir = Direction.valueOf(input)
        "Valid direction: $dir"
    } catch (e: IllegalArgumentException) {
        "Invalid direction"
    }
}

fun main() {
    println(validateDirection("UP"))
}
AInvalid direction
BValid direction: UP
CCompilation error
DRuntime error: NullPointerException
Attempts:
2 left
💡 Hint
Check if 'UP' is a valid enum constant.

Practice

(1/5)
1. Why do Kotlin enums constrain values to a fixed set?
easy
A. To prevent invalid values and reduce errors
B. To allow any value to be assigned
C. To make the code run faster
D. To increase the size of the program

Solution

  1. Step 1: Understand enum purpose

    Enums define a limited set of named values to represent options clearly.
  2. Step 2: Identify why limiting values helps

    Limiting values prevents invalid or unexpected inputs, reducing bugs.
  3. Final Answer:

    To prevent invalid values and reduce errors -> Option A
  4. Quick Check:

    Enums limit values = prevent errors [OK]
Hint: Enums fix allowed values to avoid mistakes [OK]
Common Mistakes:
  • Thinking enums allow any value
  • Believing enums improve speed directly
  • Confusing enums with variables
2. Which of the following is the correct syntax to declare an enum in Kotlin?
easy
A. enum Direction = { NORTH, SOUTH, EAST, WEST }
B. class enum Direction { NORTH, SOUTH, EAST, WEST }
C. enum class Direction { NORTH, SOUTH, EAST, WEST }
D. enum Direction { NORTH; SOUTH; EAST; WEST }

Solution

  1. Step 1: Recall Kotlin enum syntax

    Kotlin enums use 'enum class' followed by the name and curly braces with values separated by commas.
  2. Step 2: Check each option

    enum class Direction { NORTH, SOUTH, EAST, WEST } matches correct syntax; others have wrong keywords or separators.
  3. Final Answer:

    enum class Direction { NORTH, SOUTH, EAST, WEST } -> Option C
  4. Quick Check:

    Correct enum syntax = enum class Direction { NORTH, SOUTH, EAST, WEST } [OK]
Hint: Remember: 'enum class Name { VALUES }' [OK]
Common Mistakes:
  • Using 'class enum' instead of 'enum class'
  • Separating values with semicolons
  • Assigning enum like a variable
3. What will be the output of this Kotlin code?
enum class Color { RED, GREEN, BLUE }
fun main() {
    val c: Color = Color.GREEN
    println(c == Color.GREEN)
    println(c == Color.RED)
}
medium
A. false\nfalse
B. false\ntrue
C. true\ntrue
D. true\nfalse

Solution

  1. Step 1: Understand enum comparison

    Enum values are compared by identity. c is assigned Color.GREEN.
  2. Step 2: Evaluate println statements

    c == Color.GREEN is true; c == Color.RED is false.
  3. Final Answer:

    true\nfalse -> Option D
  4. Quick Check:

    Enum equality matches assigned value [OK]
Hint: Enum comparisons check exact named value [OK]
Common Mistakes:
  • Assuming enums compare by string content
  • Confusing true/false order
  • Using == incorrectly with enums
4. Identify the error in this Kotlin enum usage:
enum class Size { SMALL, MEDIUM, LARGE }
fun main() {
    val s: Size = Size.EXTRA_LARGE
    println(s)
}
medium
A. Cannot print enum values directly
B. Size.EXTRA_LARGE does not exist in the enum
C. Enum values must be lowercase
D. Missing semicolon after enum values

Solution

  1. Step 1: Check enum declaration

    Enum Size has only SMALL, MEDIUM, LARGE values defined.
  2. Step 2: Analyze usage error

    Code tries to assign Size.EXTRA_LARGE which is not defined, causing error.
  3. Final Answer:

    Size.EXTRA_LARGE does not exist in the enum -> Option B
  4. Quick Check:

    Using undefined enum value = error [OK]
Hint: Use only defined enum values [OK]
Common Mistakes:
  • Assuming enums accept any value
  • Thinking semicolons are required
  • Believing enum values must be lowercase
5. You want to restrict user input to only three modes: EASY, MEDIUM, HARD using Kotlin enums. Which approach best ensures invalid modes cannot be used in your program?
hard
A. Define enum class Mode { EASY, MEDIUM, HARD } and use Mode type for input
B. Use strings "EASY", "MEDIUM", "HARD" and check with if-else
C. Use integers 1, 2, 3 to represent modes without enum
D. Allow any string input and convert to uppercase

Solution

  1. Step 1: Understand enum benefits for input restriction

    Enums limit values to a fixed set, preventing invalid inputs.
  2. Step 2: Compare approaches

    Define enum class Mode { EASY, MEDIUM, HARD } and use Mode type for input uses enum type, ensuring only EASY, MEDIUM, HARD are valid. Others allow invalid inputs or require manual checks.
  3. Final Answer:

    Define enum class Mode { EASY, MEDIUM, HARD } and use Mode type for input -> Option A
  4. Quick Check:

    Enums enforce valid values automatically [OK]
Hint: Use enums to restrict allowed options [OK]
Common Mistakes:
  • Using strings without validation
  • Using integers without clear meaning
  • Allowing any input without checks
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