# 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.