Mengambil Input di Java: Panduan Scanner dan BufferedReader

Dalam membuat program Java yang interaktif, kita memerlukan cara untuk menerima masukan (input) dari pengguna. Java menyediakan beberapa kelas bawaan untuk menangani hal ini. Dua kelas yang paling sering digunakan untuk mengambil input dari keyboard adalah Scanner dan BufferedReader. Artikel ini akan membahas langkah-langkah penggunaan kedua kelas tersebut beserta contoh programnya.

1. Menggunakan Class Scanner

Scanner merupakan kelas yang menyediakan fungsi-fungsi untuk mengambil input dari keyboard. Kelas ini sangat populer di kalangan pemula karena penggunaannya yang praktis dan kemampuannya membaca berbagai tipe data secara langsung.

Langkah-langkah Menggunakan Scanner

Untuk menggunakan Scanner, Anda harus mengikuti langkah-langkah berikut:

  • Mengimport kelas Scanner yang ada pada package java.util dengan perintah import java.util.Scanner;.
  • Membuat objek referensi sebagai media input data. Contoh formatnya adalah Scanner sc = new Scanner(System.in);. * Memanggil method khusus untuk menerima inputan melalui objek yang dibuat sebelumnya.

Method Penting pada Scanner

Kelas Scanner menyediakan berbagai method yang disesuaikan dengan tipe data yang ingin ditampung:

  • nextLine(): Berfungsi untuk menampung data berupa String.
  • nextByte(): Berfungsi untuk menampung data bertipe byte.
  • nextShort(): Berfungsi untuk menampung data bertipe short.
  • nextInt(): Berfungsi untuk menampung data berupa int.
  • nextLong(): Berfungsi untuk menampung data bertipe long.
  • nextDouble(): Berfungsi untuk menampung data bertipe double.
  • nextFloat(): Berfungsi untuk menampung data bertipe float.
  • nextBoolean(): Berfungsi untuk menampung data bertipe boolean.

Contoh Program dengan Scanner

Berikut adalah contoh program penghitungan nilai akhir mahasiswa menggunakan Scanner:

import java.util.Scanner; 
class contohScanner{ 
    public static void main (String [] args) { 
        Scanner sc = new Scanner(System.in); 
        
        System.out.print("NPM: "); 
        String npm = sc.nextLine(); 
        
        System.out.print("Nama : "); 
        String nama = sc.nextLine(); 
        
        System.out.print("Nilai Tugas: "); 
        int tgs = sc.nextInt(); 
        
        System.out.print("Nilai UTS: "); 
        int uts = sc.nextInt(); 
        
        System.out.print("Nilai UAS: "); 
        int uas = sc.nextInt(); 
        
        double akhir = 0.2 * tgs + 0.3 * uts + 0.5 * uas; 
        char ket; 
        
        if (akhir >= 88) ket='A'; 
        else if (akhir >= 76) ket='B'; 
        else if (akhir >= 56) ket='C'; 
        else if (akhir >= 45) ket='D'; 
        else ket='E'; [cite: 967]
        
        System.out.println("Nilai akhir: " + akhir); 
        System.out.println("Nilai Huruf: " + ket); 
    }
}

2. Menggunakan Class BufferedReader

BufferedReader adalah kelas yang memungkinkan pembacaan data dari piranti berbasis karakter, misalnya dari berkas teks atau dari keyboard. Method penting dalam BufferedReader adalah readLine(), yang memungkinkan pembacaan sebuah baris teks.

Langkah-langkah Menggunakan BufferedReader

Proses inisialisasi BufferedReader sedikit lebih panjang dibandingkan Scanner:

  • Mengimport kelas yang dibutuhkan pada package java.io, yaitu BufferedReader, InputStreamReader, dan IOException .
  • Membuat objek referensi sebagai media input data. Contoh pembuatannya: BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); .
  • Memanggil method readLine() melalui objek referensi tadi.
  • Hasil yang diterima dari readLine() selalu dalam bentuk String, jadi jika ingin mengubah ke tipe data lain maka harus melakukan konversi (misalnya menggunakan Integer.parseInt()).
  • Penggunaannya diwajibkan menggunakan blok try and catch untuk menangani potensi error saat input.

Contoh Program dengan BufferedReader

Berikut adalah program penghitungan nilai yang sama, namun diimplementasikan menggunakan BufferedReader:

import java.io.*; 
class contohBufferedReader{ 
    public static void main(String[] args) { 
        try{ 
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
            
            System.out.print("NPM: "); 
            String npm = br.readLine(); 
            
            System.out.print("Nama : "); 
            String nama = br.readLine(); 
            
            System.out.print("Nilai Tugas: "); 
            String TUGAS = br.readLine(); 
            int tgs = Integer.parseInt(TUGAS); 
            
            System.out.print("Nilai UTS: "); 
            String UTS = br.readLine(); 
            int uts = Integer.parseInt(UTS); 
            
            System.out.print("Nilai UAS: "); 
            String UAS = br.readLine(); 
            int uas = Integer.parseInt(UAS); 
            
            double akhir = 0.2 * tgs + 0.3 * uts + 0.5 * uas; 
            char ket; 
            
            if (akhir >= 88) ket='A'; 
            else if (akhir >= 76) ket='B'; 
            else if (akhir >= 56) ket='C'; 
            else if (akhir >= 45) ket='D'; 
            else ket='E'; 
            
            System.out.println("Nilai akhir: " + akhir); 
            System.out.println("Nilai Huruf: " + ket); 
            
        } catch (IOException e) { 
            System.out.println("Ada kesalahan" + e.getMessage());
        }
    }
}

Kesimpulan

Scanner dan BufferedReader memiliki fungsi dasar yang sama, yaitu menangkap input pengguna. Pilihlah Scanner untuk kepraktisan parsing data langsung ke tipe angka, atau gunakan BufferedReader jika Anda berfokus pada pembacaan teks karakter berbasis baris yang memerlukan efisiensi lebih tinggi.

Tantangan: Buat dua program menggunakan Scanner dan BufferedReader. Buatlah program kalkulator sederhana yang meminta input dua buah angka dan satu buah operator matematika dari pengguna, lalu tampilkan hasilnya!