Dark Mode On/Off

# Kotlin Range

In this tutorial, we will discuss about `range` in Kotlin. In the mathematical sense, a range is a sequence of numbers, characters, etc. within a defined boundary. The boundary points are start & end and both of them are included in the range. The `range` may also have a `step` (step is used to jump numbers or characters while defining the range from start to end boundaries).

We can create a range with the help of `rangeTo()` function in Kotlin or using the `..` operator.

## Kotlin: Create a range

As we mentioned above, we can either use the `..` operator and the `rangeTo()` function, let's cover them one by one.

### Kotlin Range using the `..` Operator:

Let us create a `range` from 1 to 9 using the `..` operator.

``val range = 1..9``

In the code example above, we created a range using the `..` operator. If you want to create a range of numbers with all the numbers included in the range then using the `..` operator is easy and simple.

The only shortcoming is that we cannot create a range with a pattern where we skip/jump numbers, for example, if you want to create a range of number 1, 3, 5, 7, etc. jumping one number, or 1, 4, 7, 10, etc. jumping two numbers.

### Kotlin Range using the `rangeTo()` Operator:

We can also use `rangeTo()` function to create the range. Here is a basic example of it:

``val range = 1.rangeTo(9)``

In the code example above we are creating a range from 1 to 9, including both 1 and 9 in it.

### Check if Number is in a given Range

After you have created a range variable, if you want to check if a given number falls in that range or not, then we can do it easily using the `in` operator with `if` condition.

Here is a simple code example:

``````fun main() {
val range = 1..9
if (1 in range)
println("1 is in \$range")
if(10 in range)
println("10 is in \$range")
}``````

1 is in 1..9

We can also use a `range` in various different scenarios:

``````var lowerCase = 'a'..'z'          // Range for lowercase alphabet
var upperCase = 'A'..'Z'          // Range for uppercase alphabet
var digit = 0..9                 // Range for digits``````

This way we can easily define range of different types as per our requirements.

## Kotlin Step in Range

To define distance between two consecutive values in a range, we can use the `step()` function. For example, to print numbers from 1 to 10 with `step` of 2, we can write the range as:

``val range = 1..10 step 2``

Let us print this range using `for` loop:

``````fun main() {
val range = 1..10 step 2
for (number in range)
println(number)
}``````

1
3
5
7
9

Similarly, we can provide any number as argument to the `step` function and based on that our range variable will be created.

## Kotlin `downTo()` function

If we want to print numbers in reverse order i.e. we from 10 to 1, we cannot use `rangeTo()` function or the `..` operator. If we try to use them like in the code below, it does not print anything as default step is 1 and it will proceed in forward direction only.

``````fun main() {
val range = 10..1
for (number in range)
println(number)     // print nothing
}``````

So to create a range in the reverse order, we will use the `downTo()` function:

``````fun main() {
val range = 10 downTo 1
for (number in range)
println(number)
}``````

10
9
8
7
6
5
4
3
2
1

We can also use `step` with `downTo()` function:

``````fun main() {
val range = 10 downTo 1 step 3
for (number in range)
println(number)
}``````

10
7
4
1

## Summary

In this tutorial we discussed about `rangeTo()`, `step` and `downTo()` functions. There are also many other functions available like `first()`, `last()`, `until()` which can be used with the `range`. We will discuss about `continue`, `break` and `repeat` statement next.

Want to learn coding?
Try our new interactive courses.
Over 20,000+ students enrolled.