📖 Scenario: You are helping a small bookstore manage its inventory. You have a list of book titles and want to print each title to check the stock.
🎯 Goal: Learn how to use the forEach function in Kotlin to go through each item in a list and print it.
📋 What You'll Learn
Create a list of book titles with exact values
Create a variable to count the number of books
Use forEach to print each book title
Print the total number of books after listing them
💡 Why This Matters
🌍 Real World
Bookstores and libraries often need to list and count their inventory. Using <code>forEach</code> helps to process each item easily.
💼 Career
Knowing how to iterate collections is essential for many programming jobs, especially when working with data lists or user inputs.
Progress0 / 4 steps
1
Create a list of book titles
Create a list called books with these exact titles: "The Hobbit", "1984", "Pride and Prejudice", "To Kill a Mockingbird"
Kotlin
Hint
Use listOf to create a list with the given book titles.
2
Create a variable to count books
Create a variable called bookCount and set it to the size of the books list
Kotlin
Hint
Use the size property of the list to get the number of books.
3
Use forEach to print each book title
Use books.forEach with a lambda that takes a parameter called book and prints it
Kotlin
Hint
Use forEach with a lambda that prints each book.
4
Print the total number of books
Write a println statement that prints exactly: Total books: 4 using the bookCount variable inside an f-string
Kotlin
Hint
Use println("Total books: $bookCount") to show the total count.
Practice
(1/5)
1. What does the forEach function do when used on a list in Kotlin?
easy
A. It runs a block of code for each item in the list.
B. It creates a new list with modified items.
C. It removes items from the list.
D. It sorts the list in ascending order.
Solution
Step 1: Understand the purpose of forEach
The forEach function is designed to execute a given block of code on every element in a collection.
Step 2: Compare options with forEach behavior
Only It runs a block of code for each item in the list. correctly describes this behavior. Options B, C, and D describe other functions like map, remove, and sort.
Final Answer:
It runs a block of code for each item in the list. -> Option A
Quick Check:
forEach = run code on each item [OK]
Hint: forEach runs code on every element, not changing the list [OK]
Common Mistakes:
Confusing forEach with map that creates new lists
Thinking forEach modifies the list itself
Assuming forEach sorts or filters the list
2. Which of the following is the correct syntax to print each element of a list numbers using forEach in Kotlin?
easy
A. numbers.forEach -> println(it)
B. forEach(numbers) { println(it) }
C. numbers.forEach { println(it) }
D. numbers.forEach(println(it))
Solution
Step 1: Recall the correct forEach syntax
In Kotlin, forEach is called on the collection with a lambda block: collection.forEach { item -> ... }. The shorthand uses it for the current item.
Step 2: Check each option's syntax
numbers.forEach { println(it) } matches the correct syntax. forEach(numbers) { println(it) } wrongly uses forEach as a function with the list as argument. numbers.forEach(println(it)) incorrectly calls println inside forEach parentheses. numbers.forEach -> println(it) uses an invalid arrow syntax.
3. What will be the output of the following Kotlin code?
val fruits = listOf("apple", "banana", "cherry")
fruits.forEach { println(it.length) }
medium
A. 5 6 6
B. 5
6
6
C. apple banana cherry
D. 3 6 6
Solution
Step 1: Understand the code behavior
The list fruits contains three strings: "apple", "banana", and "cherry". The forEach prints the length of each string.
Step 2: Calculate lengths and output format
"apple" has length 5, "banana" has length 6, "cherry" has length 6. Each println prints on a new line, so output is:
5
6
6
Final Answer:
5
6
6 -> Option B
Quick Check:
Print lengths with println = lines of 5,6,6 [OK]
Hint: println prints each item on a new line [OK]
Common Mistakes:
Assuming output is on one line separated by spaces
Confusing string length with number of vowels
Printing the strings instead of their lengths
4. Identify the error in this Kotlin code snippet:
val nums = listOf(1, 2, 3)
nums.forEach(i -> println(i))
medium
A. Calling println inside forEach is not allowed
B. Missing parentheses after forEach
C. Using val instead of var for list
D. Using arrow (->) instead of curly braces for lambda
Solution
Step 1: Check lambda syntax in Kotlin
Kotlin uses curly braces {} for lambdas, not arrow notation like -> outside braces. The arrow is used inside the lambda to separate parameters from body.
Step 2: Identify the incorrect usage
The code uses i -> println(i) directly after forEach without braces, which is invalid syntax. Correct form is nums.forEach { i -> println(i) }.
Final Answer:
Using arrow (->) instead of curly braces for lambda -> Option D
Quick Check:
Lambda needs braces {} around arrow -> [OK]
Hint: Use { param -> code } for lambdas, not (param -> code) [OK]
Common Mistakes:
Using arrow notation without braces
Confusing Kotlin lambda syntax with other languages
Thinking val vs var affects forEach usage
5. Given a list of integers nums, how can you use forEach to print only the even numbers?
hard
A. nums.forEach { if (it % 2 == 0) println(it) }
B. nums.forEach { println(it % 2 == 0) }
C. nums.forEach { if (it / 2 == 0) println(it) }
D. nums.forEach { println(it) if (it % 2 == 0) }
Solution
Step 1: Understand the condition for even numbers
An even number has zero remainder when divided by 2, so it % 2 == 0 checks if a number is even.
Step 2: Use if inside forEach to print only even numbers
nums.forEach { if (it % 2 == 0) println(it) } correctly uses an if statement inside the lambda to print only when the condition is true. Other options either print booleans or have incorrect syntax.
Final Answer:
nums.forEach { if (it % 2 == 0) println(it) } -> Option A
Quick Check:
Use if inside forEach to filter printing [OK]
Hint: Use if (it % 2 == 0) inside forEach to print evens [OK]
Common Mistakes:
Printing boolean results instead of numbers
Using division instead of modulo for even check
Placing if after println causing syntax error
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.