Related Articles
Kotlin Ranges
• Last Updated : 29 Nov, 2019

In Kotlin, the range is a collection of finite values which is defined by endpoints. The range in Kotlin consists of a start, a stop, and the step. The start and stop are inclusive in the Range and the value of step is by default 1.
The range is used with comparable types.

There are three ways for creating Range in Kotlin –

• Using (..) operator
• Using rangeTo() function
• Using downTo() function

### (..) operator

It is the simplest way to work with range. It will create a range from the start to end including both the values of start and end. It is the operator form of rangeTo() function. Using (..) operator we can create range for integers as well as characters.
Kotlin program of integer range using (..) operator –

 `fun main(args : Array){`` ` `    ``println(``"Integer range:"``)``    ``// creating integer range ``    ``for``(num in ``1``..``5``){``        ``println(num)``    ``}``}`

Output:

```Integer range:
1
2
3
4
5
```

Kotlin program of character range using (..) operator –

 `fun main(args : Array){`` ` `    ``println(``"Character range:"``)``    ``// creating character range ``    ``for``(ch in ``'a'``..``'e'``){``        ``println(ch)``    ``}``}`

Output:

```Character range:
a
b
c
d
e
```

### rangeTo() function

It is similar to (..) operator. It will create a range upto the value passed as an argument. It is also used to create range for integers as well as characters.
Kotlin program of integer range using rangeTo() function –

 `fun main(args : Array){`` ` `    ``println(``"Integer range:"``)``    ``// creating integer range ``    ``for``(num in ``1``.rangeTo(``5``)){``        ``println(num)``    ``}``}`

Output:

```Integer range:
1
2
3
4
5
```

Kotlin program of character range using rangeTo() function –

 `fun main(args : Array){`` ` `    ``println(``"Character  range:"``)``    ``// creating character range``    ``for``(ch in ``'a'``.rangeTo(``'e'``)){``        ``println(ch)``    ``}``}`

Output:

```Character  range:
a
b
c
d
e
```

### downTo() function

It is reverse of the rangeTo() or (..) operator. It creates a range in descending order, i.e. from bigger values to smaller value. Below we create range in reverse order for integer and characters both.
Kotlin program of integer range using downTo() function –

 `fun main(args : Array){`` ` `    ``println(``"Integer range in descending order:"``)``    ``// creating integer range``    ``for``(num in ``5``.downTo(``1``)){``        ``println(num)``    ``}``}`

Output:

```Integer range in descending order:
5
4
3
2
1
```

Kotlin program of character range using downTo() function –

 `fun main(args : Array){`` ` `    ``println(``"Character range in reverse order:"``)``    ``// creating character range``    ``for``(ch in ``'e'``.downTo(``'a'``)){``        ``println(ch)``    ``}``}`

Output:

```Character range in reverse order:
e
d
c
b
a
```

### Range using forEach loop –

The forEach loop is also used to traverse over the range.

 `fun main(args : Array){`` ` `    ``println(``"Integer  range:"``)``    ``// creating integer range``    ``(``2``..``5``).forEach(::println)``}`

Output:

```Integer  range:
2
3
4
5
```

### step()

With keyword step, one can provide step between values. It is mainly used in order to provide the gap between the two values in rangeTo() or downTo() or in (..) operator. The default value for step is 1 and the value of step function cannot be 0.

Kotlin program of using step –

 `fun  main(args: Array) {``    ``//for iterating over the range``    ``var i = ``2``    ``// for loop with step keyword``    ``for` `(i in ``3``..``10` `step ``2``) ``        ``print(``"\$i "``) ``    ``println()``    ``// print first value of the range``    ``println((``11``..``20` `step ``2``).first) ``    ``// print last value of the range``    ``println((``11``..``20` `step ``4``).last)  ``    ``// print the step used in the range``    ``println((``11``..``20` `step ``5``).step)  ``}`

Output:

```3 5 7 9
11
19
5
```

### reversed function()

It is used to reverse the given range type. Instead of downTo() we can use reverse() function to print the range in descending order.

 `fun main(args: Array) {``    ``var range = ``2``..``8``    ``for` `(x in range.reversed()){``        ``print(``"\$x "``)``    ``}``}`

Output:

`8 7 6 5 4 3 2 `

### Some predefined function in range –

There are some predefined function in Kotlin Range: min(), max(), sum(), average().

 `fun main() {`` ` `    ``val predefined = (``15``..``20``)`` ` `    ``println(``"The minimum value of range is: "``+predefined.min())``    ``println(``"The maximum value of range is: "``+predefined.max())``    ``println(``"The sum of all values of range is: "``+predefined.sum())``    ``println(``"The average value of range is: "``+predefined.average())``}`

Output:

```The minimum value of range is: 15
The maximum value of range is: 20
The sum of all values of range is: 105
The average value of range is: 17.5
```

### Check whether a value lies within a range or not?

 `fun  main(args: Array)``{``    ``var i = ``2``    ``//to check whether the value lies in the range``    ``if``( i in ``5``..``10``)``        ``println(``"\$i is lie within the range"``)``    ``else``        ``println(``"\$i does not lie within the range"``)``}`

Output:

`2 does not lie within the range`

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up