- Циклы for, while, do-while, forEach, repeat()
- Интервалы
- Списки и множества
- Map
- Массивы
- Вложенные циклы for
- forEach
- repeat()
- while
- do-while
- How to Iterate over Each Character in the String in Kotlin?
- Kotlin – Iterate over Each Character in the String
- Method 1 – Using For loop
- Method 2 – Using String.forEach()
- Conclusion
- Related Tutorials
- Kotlin program to print each character of a string (4 different ways)
- Kotlin For Loop
- Kotlin For Loop
- Syntax
- Examples
- 1. Iterate over list using For Loop
- 2. Iterate over a Range using For Loop
- 3. Iterate over Range (with step) using For Loop
- 4. Access index and element of a list in For Loop
- 5. Iterate over characters in string using For Loop
- 6. Iterate over Map using For Loop
- Conclusion
Циклы for, while, do-while, forEach, repeat()
Цикл for в Kotlin имеет другой синтаксис. В Java нам нужно инициализировать переменную перед началом цикла, затем указать условие и затем изменять переменную.
Это классический вариант, который применяется и в других языках. Но он довольно неудобный и не понятен для новичков. Например, часто путаются в использовании и .
В Kotlin упростили цикл. Для работы с циклом нужен итератор — массив, Map, интервал чисел и т.д.
Интервалы
Стандартный вариант, когда нужно пробежаться по заданному числу элементов, описывается следующим образом. Если для цикла используется одна команда, можно обойтись без фигурных скобок, но проще всегда использовать блок.
for(i in 1..5) println(i) // Лучше со скобками for(i in 1..5)
Оператор in и его брат !in проверяют вхождение или отсутствие вхождения в диапазон.
В выражении 1..5 мы указываем диапазон от 1 до 5 (пять входит в диапазон). Переменная последовательно примет значение
Диапазон можно заменить переменной.
val range = 1..5 for(i in range)
Списки и множества
fun main() < val list = listOf("C", "A", "T") for (letter in list) < print(letter) >// Можно явно указать тип for (str: String in setOf("C", "A", "T")) < print(str) >>
Map
val capitals = mapOf( "USA" to "Washington DC", "England" to "London", "France" to "Paris" ) for ((country, capital) in capitals)
Массивы
val cats = arrayListOf() cats.add("Мурзик") cats.add("Васька") cats.add("Барсик") for(cat in cats) < println("Кот $cat") >// Результат Кот Мурзик Кот Васька Кот Барсик
Этот же пример можно переписать, используя индекс:
Проверим, является ли символ не цифрой.
fun isNotDigit(c: Char) = c !in '0'..'9' println(isNotDigit('3')) // false, это всё-таки цифра
С помощью index, element и withIndex() можно получить индекс и его значение в массиве.
val cats = arrayListOf("Barsik", "Murzik", "Vaska") for( (index, element) in cats.withIndex())
0: Мурзик 1: Васька 2: Барсик
А как быть с вариантами, когда нужно счётчик не увеличивать на единицу, а уменьшать на 2? Используем ключевые слова downTo и step.
for(i in 10 downTo 1 step 2) < print("$i ") >// выводит: 10 8 6 4 2
Без указания шага значения будут уменьшаться на единицу.
for(i in 10 downTo 1) < print("$i ") >// 10 9 8 7 6 5 4 3 2 1 for (letter in 'Z' downTo 'A') print(letter) // ZYXWVUTSRQPONMLKJIHGFEDCBA
Очень часто в циклах встречается выражение size-1, чтобы не выйти за пределы массива. Можно заменить на until.
for(i in 0..cats.size - 1) < println(cats[i]) >for(i in 0 until cats.size)
Хотим выйти из цикла при достижении какого-то значения.
for (i in 1..5) < println(i) // прекращаем перебор, когда достигнем значения 3 if (i == 3) break >// Получим 1 2 3
Ключевое слово continue позволяет продолжить перебор, при этом можно что-то сделать во время перебора, например, мяукнуть. Число 5 при этом не выводится.
println("For loop 1 to 10 continue if number is 5") for (i in 1..10) < if (i == 5) < println("Meow") continue >println(i) > // Результат For loop 1 to 10 continue if number is 5 1 2 3 4 Meow 6 7 8 9 10
Вложенные циклы for
Часто используют два цикла for. Простейший вариант.
// первый цикл for(x in 1..3) < // второй вложенный цикл for(y in 1..3)< print("$x $y \n") >> // результат 1 1 1 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3
Если мы хотим досрочно прервать на каком-то этапе цикл, то можем добавить аннотацию outerLoop@ к первому циклу и внутри второго цикла вызвать [email protected]. Как только значения станут равными (2 2), цикл завершится досрочно.
// первый цикл outerLoop@ for (x in 1..3) < // второй вложенный цикл for (y in 1..3) < print("$x $y \n") if (x == 2 && y == 2) brea[email protected] > > // результат 1 1 1 2 1 3 2 1 2 2
forEach
Пройтись по всем элементам коллекции.
val daysOfWeek = listOf("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday") daysOfWeek.forEach
repeat()
Встроенная функция для повторения команд заданное число раз.
while
Цикл while работает стандартным способом — пока условие остаётся истинным, выполняются команды в блоке цикла. Если код после условия цикла состоит из одной строчки, то фигурные скобки можно опустить.
var i = 1 while (i < 9) < println(i) i = i + 1 >// вышли из цикла и проверяем последнее значение переменной println(i) // 9
Обратите внимание, что внутри цикла мы получим числа от 0 до 8, но если проверить, чему равно значение переменной после цикла, то увидим, что оно больше.
Прервать цикл можно через break.
var i = 1 while (i < 9) < if (i == 5)< break >println(i) i += 1 > // результат 1 2 3 4
do-while
Выполняем какую-то работу, пока выполняется какое-то условие — выводим число, которое увеличивается на единицу, пока число меньше 10.
Можно прервать цикл через break. Когда число станет равным 5, цикл прекратится.
How to Iterate over Each Character in the String in Kotlin?
In this tutorial, you shall learn how to iterate over characters in a given string in Kotlin, using For loop statement or String.forEach() function, with examples.
Kotlin – Iterate over Each Character in the String
Method 1 – Using For loop
To iterate over each character in the String in Kotlin, use String.iterator() method which returns an iterator for characters in this string, and then use For Loop with this iterator.
In the following example, we take a string in str1 , and iterate over each character in this string using String.iterator() method and For Loop.
Method 2 – Using String.forEach()
To iterate over each character in the String in Kotlin, use String.forEach() method.
In the following example, we take a string in str1 , and iterate over each character in this string using String.forEach() method.
fun main(args: Array) < val str1 = "ABCD" val result = str1.forEach (< it ->println(it) >) println("Filtered String : " + result) >
Conclusion
In this Kotlin Tutorial, we learned how to iterate over the character of give String, using String.forEach() method, with the help of Kotlin example programs.
Related Tutorials
- How to Check if String Ends with Specified Character in Kotlin?
- How to Check if String Ends with Specified String in Kotlin?
- How to Check if String Starts with Specified Character in Kotlin?
- How to Check if String Starts with Specified String Value in Kotlin?
- How to Check if Two Strings are Equal in Kotlin?
- How to Compare Strings in Kotlin?
- How to Compare Strings in Kotlin?
- How to Create an Empty String in Kotlin?
- How to Filter Characters of String in Kotlin?
- How to Filter List of Strings based on Length in Kotlin?
- How to Filter only Non-Empty Strings of Kotlin List?
- How to Filter only Strings from a Kotlin List?
- How to Get Character at Specific Index of String in Kotlin?
- How to Initialize String in Kotlin?
- How to Remove First N Characters from String in Kotlin?
- How to Remove Last N Characters from String in Kotlin?
- How to check if a String contains Specified String in Kotlin?
- How to create a Set of Strings in Kotlin?
- How to define a List of Strings in Kotlin?
- How to define a String Constant in Kotlin?
- How to get Substring of a String in Kotlin?
- Kotlin String Concatenation
- Kotlin String Length
- Kotlin String Operations
- Kotlin String.capitalize() – Capitalize First Character
- Kotlin – Split String to Lines – String.lines() function
- Kotlin – Split String – Examples
- Kotlin – String Replace – Examples
- Kotlin – String to Integer – String.toInt()
- [Solved] Kotlin Error: Null can not be a value of a non-null type String
Kotlin program to print each character of a string (4 different ways)
In this kotlin programming tutorial, we will learn how to print each character of a string in kotlin. The program will take the string as input from the user and print out all characters of it one by one.
We will iterate through each character of a string and print out its value to the user. Actually, there are different ways to iterate through the characters of a string in kotlin. In this tutorial, we will learn four different ways to do it.
This is the most used method. indices is a val that returns the range of valid character indices for a char sequence. Using its value, we will get one IntRange of all index positions. The program will get all index positions IntRange and it will iterate through them one by one. One great feature of Kotlin is that we can access any character of a string by using its index. For string str, we can get the character of index i like str[i]. Using the same way, our program will print out all characters of the string. Let’s have a look at the program :
fun main(args: Array) val line:String print("Enter a string : ") line = readLine().toString() for(i in line.indices) println(line[i]) > >
The output will look like as below :
forEach is a quick way to iterate through each character of a string in kotlin.
fun main(args: Array) val line:String print("Enter a string : ") line = readLine().toString() line.forEach c -> println(c) > >
forEachIndexed is another method and you can use it instead of forEach if you need the index position with the character.
fun main(args: Array) val line:String print("Enter a string : ") line = readLine().toString() line.forEachIndexed i,c -> println("Index $i Character $c") > >
: world Index 0 Character w Index 1 Character o Index 2 Character r Index 3 Character l Index 4 Character d
Iterate by converting the string to an array :
We can first convert the string to an array and then iterate over the characters one by one. We will use toCharArray method. It returns a new character array containing the characters from the caller string. To iterate over this array, we will use one for loop
fun main(args: Array) val line:String print("Enter a string : ") line = readLine().toString() for(c in line.toCharArray()) println(c) > >
Kotlin For Loop
In this tutorial, you shall learn about For loop statement in Kotlin, its syntax, and how to use For loop statement to execute a task repeatedly in a loop, with examples.
Kotlin For Loop
Kotlin For Loop can be used to iterate over a list of items, range of numbers, map of key-value pairs, or any iterable.
In this tutorial, we will learn how to use For Loop for different kinds of scenarios where we cover a list, a range, a map, etc.
Syntax
The syntax of for loop is
For each element in the iterable, for loop executes the statement(s).
Examples
1. Iterate over list using For Loop
In this example, we shall take a Kotlin List, and use use for loop to iterate over the elements of the list. It is kind of similar to enhanced for loop in Java.
/** * Kotlin For Loop Example */ fun main(args: Array) < var nums = listOf(25, 54, 68, 72) for(num in nums)< println(num) >>
During each iteration of the for loop, num has the next element of the list nums . So, during first iteration, num has the value of 25 . In the second iteration, num has the value of 54 . The iterations continue until it executes for the last element in the list.
Run the Kotlin program in IntelliJ IDE or some other IDE of your favorite. You shall get the something similar to the following printed to the console.
2. Iterate over a Range using For Loop
The following Kotlin program demonstrates how to use a for loop to execute a set of statements for each of the element in the range.
In this example, we have a range 25..31 . Meaning, the range has elements from 25 to 31 in steps of 1, which is of course the default, as we have not mentioned any step value for the range.
Main.kt
/** * Kotlin For Loop Example */ fun main(args: Array) < for(num in 25..31)< println(num) >>
The for loop has run for all the elements in the range one by one.
3. Iterate over Range (with step) using For Loop
In this example, we use for loop to iterate over a range of elements. The range we take has a step value of 2.
Main.kt
/** * Kotlin For Loop Example */ fun main(args: Array) < for(num in 25..35 step 2)< println(num) >>
Run the above Kotlin program and you shall see the for loop executed for the range of elements in steps of specified step value.
4. Access index and element of a list in For Loop
You can also access the index of element, along with the element, of the list. For the list, you should mention List.withIndex() similar to what we have mentioned nums.withIndex() .
During each iteration, you shall get the pair (index, element).
Main.kt
/** * Kotlin For Loop Example */ fun main(args: Array) < var nums = listOf(25, 54, 68, 72) for((index,num) in nums.withIndex())< println(index.toString()+" - "+num) >>
Run the above Kotlin For Loop program.
We have printed both the index and element of the Kotlin List in a For Loop.
5. Iterate over characters in string using For Loop
String is a collection of characters. We can iterate over the characters of the String.
In this example, we execute a set of statements for each character in a String using for loop.
Main.kt
/** * Kotlin For Loop Example */ fun main(args: Array) < var str = "kotlin" for(char in str)< println(char) >>
Run the Kotlin program and we shall get the following output.
6. Iterate over Map using For Loop
Map is a collection of key-value pairs. In this example, we shall write a for loop that iterates over each key-value pair of the map and executes a set of statements.
Main.kt
/** * Kotlin For Loop Example */ fun main(args: Array) < var map = mapOf(6 to "Kotlin", 7 to "Android", 4 to "Java") for(key in map.keys)< println(key.toString()+" - "+mapKotlin for in string) >>
Run the above Kotlin program.
6 - Kotlin 7 - Android 4 - Java
You may not get the same order of key-value pairs when you iterate over a map. Since, map is not an index based, but key based collection.
Conclusion
In this Kotlin Tutorial, we learned how to use For Loop in different scenarios to execute a block of statements inside the for loop for each element in the collection or such.