10. Masukan standar dengan Java Scanner (Tutorial KOTLIN - Bahasa Indonesia)
Apa itu Java Scanner?
Scanner adalah cara lain untuk mendapatkan data dari input standar. Anda dapat mengaksesnya langsung dari Kotlin karena dapat dioperasikan dengan pustaka Java lainnya. Pemindai memungkinkan program untuk membaca nilai dari tipe yang berbeda (string, angka, dll.) dari input standar.
Untuk menggunakannya, Anda perlu menambahkan pernyataan import berikut ke bagian atas file Anda dengan kode sumber:
import java.util.Scanner
atau
import java.util.*
Mari buat variabel yang diinisialisasi oleh Scanner:
val scanner = Scanner(System.`in`)
Di baris ini, System.`in` adalah objek yang mewakili aliran input standar. Scanner membungkusnya sebagai sumber data internal dan menyediakan serangkaian metode mudah untuk bekerja dengannya. Tentu saja, Anda dapat menggunakan Scanner(System.`in`) dalam kode Anda alih-alih membuat variabel Scanner, tetapi menggunakan satu variabel adalah cara yang lebih nyaman dan mudah dibaca untuk melakukannya.
Sekarang kita dapat membaca data dari input standar:
val line = scanner.nextLine() // read a whole line, e.g., "Hello, Kotlin"
val num = scanner.nextInt() // read a number, e.g., 123
val string = scanner.next() // read a string, e.g., "Hello"
scanner.next() hanya membaca satu kata, bukan baris. Jika pengguna memasukkan Hello, Kotlin, itu hanya akan membaca Hello,.
Setelah Anda memanggil scanner.nextLine() atau scanner.nextInt() atau yang serupa, program akan mengantisipasi input data. Berikut adalah contoh data input yang benar:
Hello, Kotlin
123 Hello
Hello, Kotlin
123
Hello
Dimungkinkan untuk membaca angka sebagai string menggunakan scanner.next() atau scanner.nextLine() jika nomor tersebut berada di baris baru.
Selain itu, tipe Scanner menyediakan beberapa metode (fungsi) untuk membaca nilai tipe lain. Lihat dokumentasi Class Scanner untuk detail lebih lanjut.
import java.util.Scanner // a class (type) from the Java standard library
fun main() {
val scanner = Scanner(System.`in`) // membaca data
val num1 = scanner.nextInt() // membaca angka pertama
val num2 = scanner.nextInt() // membaca angka kedua
println(num2) // mencetak angka kedu
println(num1) // mencetak angka pertama
}
scanner.cancel()
Pembatas kustom
val scanner = Scanner("123_456")
Untuk membaca kata dan bilangan bulat ini secara terpisah, kita harus menetapkan simbol pembatas baru – "_" :
scanner.useDelimiter("_")
Sekarang, kita dapat membaca data ini:
println(scanner.nextInt()) // 123
println(scanner.nextInt()) // 456
Periksa elemen selanjutnya
val scanner = Scanner("Hello, Kotlin!")
Sekarang, mencoba membaca beberapa kata:
val word1 = scanner.next()
val word2 = scanner.next()
val word3 = scanner.next()
Saat mencoba membaca kata ketiga, akan menerima pengecualian dan program kami akan macet. Apa yang bisa kita lakukan dengan itu? Pemindai memiliki metodenya sendiri untuk situasi seperti itu – disebut hasNext() (hasNextInt(), dll).
if (scanner.hasNext()) val word1 = scanner.next() // Hello,
if (scanner.hasNext()) val word2 = scanner.next() // Kotlin!
if (scanner.hasNext()) val word3 = scanner.next() // It doesn't work but also doesn't make error