Bird
Raised Fist0
Kotlinprogramming~10 mins

For loop with index (withIndex) in Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to loop over the list with index and print each index.

Kotlin
val fruits = listOf("Apple", "Banana", "Cherry")
for (([1], fruit) in fruits.withIndex()) {
    println("Index: $[1]")
}
Drag options to blanks, or click blank then click option'
Apos
Bi
Cindex
Dcount
Attempts:
3 left
💡 Hint
Common Mistakes
Using a variable name that does not match the index variable in the loop.
Forgetting to use parentheses around the destructured variables.
2fill in blank
medium

Complete the code to print both index and fruit name inside the loop.

Kotlin
val fruits = listOf("Apple", "Banana", "Cherry")
for ((index, [1]) in fruits.withIndex()) {
    println("$index: $[1]")
}
Drag options to blanks, or click blank then click option'
Aitem
Bfruit
Celement
Dvalue
Attempts:
3 left
💡 Hint
Common Mistakes
Using a variable name that is not descriptive of the list elements.
Mixing up the order of index and element in the destructuring.
3fill in blank
hard

Fix the error in the loop variable declaration to correctly destructure index and element.

Kotlin
val numbers = listOf(10, 20, 30)
for ([1], num in numbers.withIndex()) {
    println("$num at index $[1]")
}
Drag options to blanks, or click blank then click option'
A(index, num)
Bindex
C(index,)
D(index)
Attempts:
3 left
💡 Hint
Common Mistakes
Not using parentheses for destructuring.
Only declaring one variable instead of two.
4fill in blank
hard

Fill both blanks to create a map of index to fruit name for fruits longer than 5 characters.

Kotlin
val fruits = listOf("Apple", "Banana", "Cherry", "Date")
val longFruits = fruits.withIndex().filter { it.value.length [1] 5 }.associate { it.index to it.[2] }
Drag options to blanks, or click blank then click option'
A>
B<
Cvalue
Dlength
Attempts:
3 left
💡 Hint
Common Mistakes
Using the wrong comparison operator.
Using 'length' instead of 'value' in the associate function.
5fill in blank
hard

Fill all three blanks to create a list of strings showing index and fruit in uppercase for fruits starting with 'B' or later.

Kotlin
val fruits = listOf("Apple", "Banana", "Cherry", "Date")
val result = fruits.withIndex().filter { it.value[0] [1] 'B' }.map { "$[2]: $[3]" }
println(result)
Drag options to blanks, or click blank then click option'
A>=
Bit.index
Cit.value.uppercase()
D<=
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<=' instead of '>=' in the filter.
Not converting fruit names to uppercase.

Practice

(1/5)
1. What does the withIndex() function do in a Kotlin for loop?
easy
A. It filters elements based on their index.
B. It sorts the list before looping.
C. It provides both the index and the value of each element during iteration.
D. It reverses the list before looping.

Solution

  1. Step 1: Understand the purpose of withIndex()

    The withIndex() function returns an iterable of pairs containing the index and the value of each element in the collection.
  2. Step 2: Identify what the loop receives

    Using withIndex() in a for loop allows access to both the position (index) and the element (value) simultaneously.
  3. Final Answer:

    It provides both the index and the value of each element during iteration. -> Option C
  4. Quick Check:

    withIndex() = index + value [OK]
Hint: Remember: withIndex() gives index and value together [OK]
Common Mistakes:
  • Thinking it sorts or filters the list
  • Assuming it reverses the collection
  • Confusing index with value only
2. Which of the following is the correct syntax to loop over a list items with index in Kotlin?
easy
A. for ((index, value) in items.withIndex()) { /* code */ }
B. for (index, value in items) { /* code */ }
C. for (index; value in items.withIndex()) { /* code */ }
D. for index, value in items.withIndex() { /* code */ }

Solution

  1. Step 1: Recall Kotlin destructuring syntax in loops

    Kotlin allows destructuring pairs using parentheses in the for loop header, like for ((index, value) in ...).
  2. Step 2: Match syntax with withIndex()

    The correct syntax uses items.withIndex() and destructures the pair into index and value.
  3. Final Answer:

    for ((index, value) in items.withIndex()) { /* code */ } -> Option A
  4. Quick Check:

    Destructure pairs with (index, value) [OK]
Hint: Use parentheses to destructure pairs in for loop [OK]
Common Mistakes:
  • Omitting parentheses around (index, value)
  • Using semicolon instead of comma
  • Missing 'in' keyword
3. What will be the output of this Kotlin code?
val data = listOf("apple", "banana", "cherry")
for ((i, v) in data.withIndex()) {
    println("$i: $v")
}
medium
A. 0: apple 1: banana 2: cherry
B. apple: 0 banana: 1 cherry: 2
C. 1: apple 2: banana 3: cherry
D. Error: cannot destructure

Solution

  1. Step 1: Understand the list and loop

    The list contains three fruits: "apple", "banana", "cherry". The loop uses withIndex() to get index and value.
  2. Step 2: Trace the loop output

    Each iteration prints the index and value separated by colon and space. Indices start at 0.
  3. Final Answer:

    0: apple 1: banana 2: cherry -> Option A
  4. Quick Check:

    Index starts at 0, prints index: value [OK]
Hint: Index starts at 0 in withIndex() loops [OK]
Common Mistakes:
  • Assuming index starts at 1
  • Swapping index and value in output
  • Expecting error from destructuring
4. Identify the error in this Kotlin code snippet:
val numbers = arrayOf(10, 20, 30)
for (i, num in numbers.withIndex()) {
    println("$i -> $num")
}
medium
A. Cannot use withIndex() on arrays.
B. Missing parentheses around (i, num) in the for loop.
C. The println statement syntax is incorrect.
D. Variable names i and num are reserved keywords.

Solution

  1. Step 1: Check for correct destructuring syntax

    In Kotlin, destructuring pairs in a for loop requires parentheses: for ((i, num) in ...).
  2. Step 2: Verify other parts of the code

    Using withIndex() on arrays is valid. The println syntax and variable names are correct.
  3. Final Answer:

    Missing parentheses around (i, num) in the for loop. -> Option B
  4. Quick Check:

    Destructure pairs with parentheses [OK]
Hint: Always use parentheses to destructure pairs in for loops [OK]
Common Mistakes:
  • Omitting parentheses in destructuring
  • Thinking withIndex() doesn't work on arrays
  • Misreading println syntax
5. Given a list of database table names tables = listOf("users", "orders", "products"), how can you create a map of index to table name using a Kotlin for loop with withIndex()?
hard
A. val map = mutableMapOf() for (t in tables) { map[t] = t.length }
B. val map = mutableMapOf() for ((i, t) in tables.withIndex()) { map[t] = i }
C. val map = mutableMapOf() for (i in tables.withIndex()) { map[i] = tables[i] }
D. val map = mutableMapOf() for ((i, t) in tables.withIndex()) { map[i] = t }

Solution

  1. Step 1: Understand the goal

    We want a map where keys are indices (Int) and values are table names (String).
  2. Step 2: Use withIndex() to get index and value

    Loop over tables.withIndex() and assign map[i] = t to build the map correctly.
  3. Final Answer:

    val map = mutableMapOf() for ((i, t) in tables.withIndex()) { map[i] = t } -> Option D
  4. Quick Check:

    Index to value mapping with withIndex() [OK]
Hint: Use withIndex() and map[i] = value to build index-value map [OK]
Common Mistakes:
  • Swapping key and value types in map
  • Not destructuring with parentheses
  • Using wrong loop variable types
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