Pemrograman Kotlin

Bukan program komputer namanya kalau tidak memiliki input dan output. Input dan output merupakan komponen wajib setiap program komputer.

Pada kesempatan ini, kita akan belajar cara mengambil input dan Menampilkan output untuk program berbasis teks.

Kotlin telah menyediakan beberapa fungsi untuk mengambil input dan menampilkan output, diantaranya println(), print(), readLine(), Scanner(), dll.

Mari kita bahas semuanya…

Menampilkan Output dengan Fungsi println/print

Fungsi println() dan print() digunakan untuk menampilkan teks atau kalimat.

fun main(args: Array<String>){
    println("Kalimat yang akan ditampilkan")
    print("kata yang akan ditampilkan")
    println("Hello World")
}

Teks yang ingin ditampilkan harus diapit dengan tanda petik ganda ("...") atau tanda petik tunggal untuk satu karakter.

Kita juga bisa menggunakan tanda petik tiga:

print("""Contoh Kalimat""")

Apa bedanya print() dengan println()?

  • print() untuk menampilkan teks apa adanya.
  • println() untuk menampilkan teks dalam satu baris.

Sebenarnya sama saja seperti fungsi System.out.print() dan System.out.println() pada java.

Pada Kotlin, fungsi tersebut disederhanakan dan ditingkatkan kemampuannya.

String Template

String Template merupakan template untuk menampilkan teks.

Jika pada Java kita menggunakan tanda plus (+) untuk menggabungkan String, maka di Kotlin… selain menggunakan tanda plus, kita juga bisa menggunakan String template dengan simbol dolar ($).

Java:

System.out.println("Nama: " + nama);
System.out.println("Umur: " + umur + " tahun");

Kotlin:

println("Nama: $nama")
println("Umur: $umur tahun")
println("Umur saya " + nama + " tahun")

Mana yang lebih sederhana?

Tentunya kotlin.

Simbol dolar maksudnya untuk mengambil nilai dari variabel dan menampilkannya ke dalam teks.

Contoh:

fun main(args: Array<String>){

    val nama = "Reza"
    val usia = 13
    val alamat = "Bandung"

    val template = """
    nama: $nama
    usia: $usia tahun
    alamat: $alamat

    Reza 5 tahun lagi akan berusia ${usia + 5} tahun
    """

    println(template)

}

Pada contoh di atas kita menggunakan ${...} untuk melakukan operasi di dalam template string.

Kita juga bisa memanggil fungsi di sana.

Hasil outputnya:

Hasil input tanpa variabel

Hasil outputnya agak masuk ke dalam (indent).

Untuk mengatasi ini, kita bisa menggunakan method trimIndent().

val template = """
nama: $nama
usia: $usia tahun
alamat: $alamat

Reza 5 tahun lagi akan berusia ${usia + 5} tahun
""".trimIndent()

Lalu bagaimana kalau kita ingin menampilkan simbol dolar pada String template?

Gampang.

Kita harus menggunakan dua dolar.

Contoh:

val uangku = 48
println("uangku sebanyak $$uangku")

Hasilnya:

uangku sebanyak $48

Mengambil Input dari Keyboard

Pengguna komputer berinteraksi dengan program menggunakan keyboard dan perangkat masukan lainnya.

Melalui perantara keyboard, pengguna dapat memasukan data ke program. Kemudian program memperosesnya menjadi sebuah informasi.

Ada tiga cara mengambil input dari keyboard:

  1. Menggunakan fungsi readLine()
  2. Menggunakan class Scanner
  3. Menggunakan class BufferedReader

Mari kita coba satu per satu…

Mengambil Input dengan Fungsi readLine()

Fungsi ini akan mengembalikan nilai String yang Nullable (String?). Artinya, nilai bisa String atau bisa null (kosong).

Hal ini untuk mengurangi terjadinya error NullPointerException.

Contoh:

Mengambil input dan tidak menyimpannya ke dalam variabel.

fun main(args: Array<String>){
    println("Tekan Enter untuk melanjutkan...")
    readLine()
    println("Terima kasih")
}

Hasil outputnya:

Hasil input tanpa variabel

Mengambil input dan menyimpannya ke dalam variabel.

fun main(args: Array<String>){
    // mengambil input
    print("Inputkan nama: ")
    val nama = readLine()
    print("Inputkan umur: ")
    val umur = readLine()

    // menampilkan output
    println("Namaku $nama saat ini berusia $umur tahun")
}

Hasil outputnya:

Hasil input tanpa variabel

Jika kita ingin melakukan operasi terhadap data yang diinputkan, maka kita harus mengubah tipe datanya.

Misalkan, inputan umur ingin kita tambahkan dengan 2.

Kita bisa menggunakan fungsi Integer.valueOf() atau method toInt().

// cara 1
var umurbaru = Integer.valueOf(umur) + 2
// cara 2
var umurbaru = umur!!.toInt() + 2

Tanda !! artinya mengizinkan NullPointerException jika variabel umur bernilai null. Pembahasan lebih mendalam tentang ini, bisa dibaca di “Apa itu Null Safety?”.

Mengambil Input dengan Class Scanner

Class Scanner bisa juga kita gunakan pada Kotlin.

Pertama kita harus mengimpor dulu Class Scanner dari paket java.util.

import java.util.Scanner;

Setelah itu baru kita bisa membuat objek Scanner.

Contohnya:

import java.util.Scanner;

fun main(args: Array<String>) {
    // membuat objek scanner
    val input = Scanner(System.`in`)

    // mengambil input
    print("Nama: ")
    val nama = input.nextLine()
    print("Umur: ")
    val umur = input.nextInt()

    // menampilkan isi variabel nama dan umur
    println("Nama kamu adalah $nama dan usianya $umur tahun")
}

Hasil output:

Hasil input dengan class Scanner

Perlu diperhatikan: tanda petik yang digunakan pada System.`in` merupakan tanda petik terbalik (back quote), bukan tanda petik biasa.

Tombol tidle untuk tanda petik terbalik (backquote)

Sumber: computerhope.com

Mengambil Input Class BufferedReader

Selain menggunakan Class Scanner, kita juga bisa mengambil input dengan Class BufferedReader.

Class BufferedReader tidak bisa bekerja sendirian, dia juga butuh Class InputStreamReader.

Pertama kita harus mengimpor dua Class tersebut dari paket java.io.

import java.io.InputStreamReader;
import java.io.BufferedReader;

Setelah itu, baru kita bisa menggunakannya.

Contoh:

import java.io.InputStreamReader;
import java.io.BufferedReader;

fun main(args: Array<String>) {
    // membuat objek BufferedReader
    val input = BufferedReader(InputStreamReader(System.`in`))

    // mengambil input
    print("input nama: ")
    val namaku = input.readLine()

    // menampilkan output
    println("namaku adalah $namaku")
}

Hasil output:

Hasil input dengan class BufferedReader

Itulah tiga cara mengambil input dari keyboard.

Mudah bukan?

Apa Selanjutnya?

Kita sudah mempelajari berbagai cara mengambil input dan menampilkan input pada Kotlin.

Selanjutnya silahkan perlajari tentang variabel, operator, control flow, dsb.

Ada pertanyaan?

Silahkan kirimkan melalui komentar.