Tutorial Belajar Java Part 14: Cara Menginput Data ke dalam Bahasa Java

Sebelumnya kita telah membahas 4 macam cara menampilkan teks (output) dalam bahasa pemrograman Java. Kali ini akan dilanjutkan ke proses input, yakni cara menerima nilai masukan ke dalam bahasa Java.


Cara Input nilai dengan Scanner Class

Jika dibandingkan dengan beberapa bahasa pemrograman dasar lain seperti Pascal, C, C++ dan juga Python, proses input data dalam bahasa Java termasuk yang paling kompleks. Kita butuh mengakses class khusus dan "membaca inputan" dengan perintah tertentu. Perintah yang digunakan juga beda-beda tergantung tipe data.

Terdapat beberapa cara untuk menginput data ke dalam bahasa Java, diantaranya:

  • Scanner class 
  • BufferReader class 
  • Console class 

Dalam tutorial kali ini kita hanya membahas Scanner class saja. Berikut contoh penggunaannya:

import java.util.Scanner;

class BelajarJava {
  public static void main(String args[]){
    
    Scanner input = new Scanner(System.in);
    
    System.out.print("Nama anda? ");
    String nama = input.nextLine();
    System.out.println("Semangat Pagi, " + nama);
    
  }
}

Di baris pertama terdapat perintah import java.util.Scanner yang berguna untuk proses import java.util.Scanner class ke dalam kode program saat ini.

Perintah tersebut diperlukan karena Scanner class bukanlah class bawaan Java yang secara otomatis langsung tersedia. Sepanjang belajar bahasa Java ini, nantinya kita akan melihat perintah import class lain.

Dalam bagian main(), terdapat perintah Scanner input = new Scanner(System.in). Ini merupakan proses instansiasi Scanner class ke dalam variabel input. Dengan kata lain, variabel input akan berisi object dari Scanner class.

Penjelasan ini memang agak susah di mengerti, karena butuh pemahaman tentang materi OOP (Object Oriented Programming), atau pemrograman berbasis object di Java.

Untuk saat ini, anggap saja baris Scanner input = new Scanner(System.in) harus ditulis persis seperti itu, dan hasilnya variabel input akan berisi object dari class Scanner. Variabel input inilah yang nantinya kita pakai untuk menjalankan perintah input data.

Di baris 8 saya menulis perintah System.out.print("Nama anda? ") sekedar untuk menampilkan teks "Nama anda?". Karena menggunakan System.out.print(), maka baris selanjutnya akan disambung, tidak pindah ke baris baru.

Kemudian di baris 9 terdapat perintah String nama = input.nextLine(). Di sini saya membuat sebuah variabel nama bertipe String. Artinya, variabel nama bisa diisi dengan kumpulan teks. Variabel nama langsung diisi dengan hasil pemanggilan perintah input.nextLine(). Disinilah proses input dilakukan.

Terakhir di baris 10 saya menampilkan isi dari variabel nama, yakni hasil yang didapat dari proses input.

Silahkan simpan kode diatas sebagai BelajarJava.java, compile dan jalankan ke cmd.

Contoh kode Java untuk input dataPada saat dijalankan, tampil teks "Nama anda?", dan kemudian cursor akan berhenti menunggu kita menginput sesuatu. Silahkan input nama sembarang, lalu tekan Enter. Hasilnya, akan tampil teks sapaan berupa "Semangat Pagi, <nama >". Karena saya menginput "Andre", maka hasilnya menjadi "Semangat Pagi, Andre".

Sip, kita sudah berhasil menginput data ke dalam program bahasa Java.


Cara Input Data Tipe Data Integer

Dalam contoh sebelumnya, data yang diinput bertipe String atau teks. Jika diinput angka, itu juga tetap dianggap sebagai string yang tidak bisa kita olah dengan operasi matematika seperti perkalian.

Untuk bisa menginput tipe angka bulat (integer), harus me-modifikasi baris input.nextLine() menjadi input.nextInt(). Berikut contoh penggunaannya:

import java.util.Scanner;

class BelajarJava {
 public static void main(String args[]){
    
  Scanner input = new Scanner(System.in);
    
  System.out.print("Umur anda? ");
  int usia = input.nextInt();
  System.out.println("Anda sudah ulang tahun sebanyak " + usia + " kali");
    
 }
}

Contoh kode Java untuk input data angkaDalam kode ini saya melakukan proses input dengan perintah int usia = input.nextInt(). Sehingga, variabel usia akan berisi data angka.

Karena proses pembacaan data menggunakan perintah input.nextInt(), maka jika kita input huruf atau kata (string) , program Java akan error:

Contoh kode Java untuk input data angka error

Dalam contoh ini, saya menginput teks "Duapuluh Tahun", hasilnya terjadi error karena inputan program seharusnya ditulis dalam angka bulat (integer).

Bagaimana solusi untuk mengatasi masalah ini? Salah satu caranya bisa menggunakan teknik exception handling (melalui perintah try-catch). Namun materi exception handling ini akan kita bahas dalam tutorial terpisah.

Dan seperti bisa ditebak, untuk setiap tipe data, perintah input yang dipakai juga berbeda-beda. Berikut daftar perintahnya:

  • nextBoolean()
  • nextByte()
  • nextDouble()
  • nextFloat()
  • nextInt()
  • nextLine()
  • nextLong()
  • nextShort()

Sebagai contoh, jika kita ingin membaca inputan dalam tipe data boolean, perintah yang dipakai adalah input.nextBoolean().


Contoh Program Input Biodata

Sebagai penutup tutorial ini, saya akan membuat kode program sederhana untuk proses input biodata mahasiswa. Silahkan pelajari sejenak kode berikut:

import java.util.Scanner;

class BelajarJava {
  public static void main(String args[]){
    
    String nama;
    int umur;
    double ipk;
    String alamat;
    
    Scanner input = new Scanner(System.in);
    
    System.out.println("## Biodata Mahasiswa ##");
    System.out.println("=======================");   
    System.out.println();
    
    System.out.print("Nama: ");
    nama = input.nextLine();
    
    System.out.print("Umur: ");
    umur = input.nextInt();

    System.out.print("IPK: ");
    ipk = input.nextDouble();   
    input.nextLine();
   
    System.out.print("Alamat: ");
    alamat = input.nextLine();
  
    System.out.println("=======================");   
    System.out.println();
    
    System.out.print(nama + " berusia "+ umur + " tahun, ");
    System.out.print("memiliki IPK " + ipk);
    System.out.print(" dan beralamat di " + alamat);
    
  }
}

Di awal kode program saya membuat variabel nama, umur, ipk dan alamat dengan tipe data yang berbeda-beda. Setiap variabel akan diisi dengan nilai yang berasal dari proses input sebagai berikut:

  • Untuk tipe data String, yakni variabel nama dan alamat menggunakan perintah input.nextLine() seperti di baris 18 dan 28.
  • Untuk tipe data Integer, yakni variabel umur menggunakan perintah input.nextInt() seperti di baris 21.
  • Untuk tipe data Double, yakni variabel ipk menggunakan perintah input.nextDouble() seperti di baris 24.

Di baris 25, terdapat perintah input.nextLine() setelah pembacaan data ipk = input.nextDouble(). Baris ini diperlukan sebagai trik agar tidak bermasalah dengan karakter "Enter" yang kita input setelah mengisi nilai ipk.

Tanpa perintah ini, proses input alamat tidak bisa dilakukan karena secara otomatis langsung berisi karakter "Enter" yang ditekan pada saat mengakhiri input ipk.

Setelah proses input diterima, keempat variabel ditampilkan kembali dengan perintah System.out.print() di baris 33 – 35. Mari di compile dan run:

Contoh kode Java untuk input biodata mahasiswa

Masalah yang mungkin akan anda alami adalah sewaktu proses input nilai ipk. Dari tampilan di atas, saya memakai tanda koma sebagai penanda pecahan, yakni 3,12. Padahal, umumnya penanda pecahan ini menggunakan tanda titik seperti 3.14.

Ini berkaitan dengan konfigurasi sistem operasi yang digunakan, beberapa ada yang di set ke bahasa indonesia (pakai tanda koma), dan beberapa ada yang secara default menggunakan input dalam bahasa inggris (pakai tanda titik).

Agar proses input angka seragam, tukar perintah pembuatan object Scanner di baris 11 dengan kode berikut:

Scanner input = new Scanner(System.in).useLocale(Locale.US);

Selain itu juga perlu menambah proses import Locale class di bagian atas:

import java.util.Locale;

Dengan tambahan perintah ini, maka proses input akan memakai pengaturan amerika (US), yakni menggunakan tanda titik sebagai penanda pecahan. Berikut kode program lengkap biodata mahasiswa dengan tambahan Locale class:

import java.util.Scanner;
import java.util.Locale;

class BelajarJava {
  public static void main(String args[]){
    
    String nama;
    int umur;
    double ipk;
    String alamat;
    
    Scanner input = new Scanner(System.in).useLocale(Locale.US);
    
    System.out.println("## Biodata Mahasiswa ##");
    System.out.println("=======================");   
    System.out.println();
    
    System.out.print("Nama: ");
    nama = input.nextLine();
    
    System.out.print("Umur: ");
    umur = input.nextInt();

    System.out.print("IPK: ");
    ipk = input.nextDouble();   
    input.nextLine();
   
    System.out.print("Alamat: ");
    alamat = input.nextLine();
  
    System.out.println("=======================");   
    System.out.println();
    
    System.out.print(nama + " berusia "+ umur + " tahun, ");
    System.out.print("memiliki IPK " + ipk);
    System.out.print(" dan beralamat di " + alamat);
    
  }
}

Dalam tutorial belajar bahasa pemrograman Java kali ini kita telah membahas proses input atau cara membaca data inputan. Seperti yang bisa dilihat, proses input di bahasa Java memang sedikit rumit dibandingkan bahasa lain.

Untuk materi berikutnya kita akan masuk ke Jenis-jenis Tipe Data dalam Bahasa Java.

Add Comment