Secara umum, sebuah program komputer terdiri atas tiga komponen utama, yaitu input, proses, dan output.
- Input: data atau nilai yang dimasukkan ke dalam program.
- Proses: serangkaian langkah atau instruksi yang mengolah data input menjadi informasi yang berguna.
- Output: hasil dari proses pengolahan data tersebut.
Seluruh bahasa pemrograman menyediakan mekanisme untuk melakukan proses input dan output.
Dalam bahasa Java, terdapat tiga class utama yang digunakan untuk menerima input melalui antarmuka teks (console), yaitu:
ScannerBufferedReaderConsole
Ketiga class tersebut digunakan untuk menangani input pada program berbasis teks.
Sementara itu, untuk program berbasis antarmuka grafis (GUI), Java menyediakan class lain seperti JOptionPane atau komponen input box pada form.
Untuk menghasilkan keluaran (output), Java menyediakan metode bawaan seperti print(), println(), dan format().
Class Scanner menyediakan fungsi-fungsi untuk membaca input dari keyboard.
Untuk dapat menggunakan Scanner, class ini harus diimpor terlebih dahulu:
import java.util.Scanner;Contoh penggunaan dalam program:
package pertemuan2;
// Mengimpor Scanner ke program
import java.util.Scanner;
public class DataKaryawan {
public static void main(String[] args) {
// Deklarasi variabel
String nama, alamat;
int usia, gaji;
// Membuat objek Scanner
Scanner keyboard = new Scanner(System.in);
// Menampilkan output ke pengguna
System.out.println("### Pendataan Karyawan PT. Petani Kode ###");
System.out.print("Nama karyawan: ");
nama = keyboard.nextLine();
System.out.print("Alamat: ");
alamat = keyboard.nextLine();
System.out.print("Usia: ");
usia = keyboard.nextInt();
System.out.print("Gaji: ");
gaji = keyboard.nextInt();
// Menampilkan data yang telah disimpan
System.out.println("--------------------");
System.out.println("Nama Karyawan: " + nama);
System.out.println("Alamat: " + alamat);
System.out.println("Usia: " + usia + " tahun");
System.out.println("Gaji: Rp " + gaji);
}
}Beberapa hal penting terkait penggunaan Scanner:
-
Fungsi yang dipanggil bergantung pada tipe data variabel:
String→nextLine()int→nextInt()double→nextDouble()- dsb.
-
Objek
Scannerdapat digunakan untuk membaca berbagai tipe data, tetapi perlu diperhatikan bahwa kombinasi pemanggilannextLine()setelahnextInt()ataunextDouble()dapat menyebabkan newline character tersisa, sehingga input berikutnya terbaca kosong. Solusi: menambahkankeyboard.nextLine();setelah pemanggilannextInt()ataunextDouble()untuk membersihkan buffer. -
Untuk program yang lebih kompleks, pertimbangkan penanganan error menggunakan exception handling (
try-catch) untuk menghindari InputMismatchException ketika pengguna memasukkan tipe data yang tidak sesuai.
Dengan pemahaman ini, Scanner dapat digunakan tidak hanya untuk program sederhana berbasis teks, tetapi juga untuk aplikasi yang membutuhkan validasi input dan kontrol alur eksekusi yang lebih baik.
Class BufferedReader tidak hanya digunakan untuk mengambil input dari keyboard, tetapi juga dapat membaca data dari file maupun jaringan.
Class ini berada dalam paket java.io dan harus diimpor sebelum digunakan:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;Contoh implementasi dalam program:
package pertemuan2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ContohBufferedReader {
public static void main(String[] args) throws IOException {
String nama;
// Membuat objek InputStreamReader
InputStreamReader isr = new InputStreamReader(System.in);
// Membuat objek BufferedReader
BufferedReader br = new BufferedReader(isr);
// Mengisi variabel 'nama' menggunakan BufferedReader
System.out.print("Inputkan nama: ");
nama = br.readLine();
// Menampilkan output
System.out.println("Nama kamu adalah " + nama);
}
}Beberapa hal penting terkait BufferedReader:
-
BufferedReadertidak dapat berdiri sendiri. Ia membutuhkan teman, yaitu:InputStreamReaderuntuk membaca aliran input dari keyboard atau sumber lain.- Penanganan exception
IOException, karena metodereadLine()dapat menimbulkan kesalahan input/output.
-
Perbedaan utama dengan
Scanner:-
Scannermenggunakan metodenext(),nextInt(),nextDouble(), dsb. -
BufferedReadermenggunakan metodereadLine()untuk membaca String. Untuk tipe data lain seperti integer, nilai harus dikonversi secara eksplisit, misalnya:int angka = Integer.parseInt(br.readLine());
-
-
Tips: gunakan Ctrl+Spasi di IDE untuk menampilkan hint autocomplete, sehingga mempermudah penulisan kode.
BufferedReader lebih efisien dibanding Scanner untuk membaca input berukuran besar, terutama saat membaca file atau data dari jaringan, karena menggunakan buffer internal yang mengurangi overhead baca/tulis.
Class Console mirip dengan BufferedReader karena menggunakan metode readLine() untuk mengambil input.
Namun, terdapat beberapa perbedaan penting:
Consolehanya dapat digunakan di lingkungan console, seperti Terminal atau CMD.- Class ini tidak dapat digunakan langsung di IDE seperti NetBeans; kompilasi dan eksekusi harus dilakukan secara manual melalui terminal.
Sebelum digunakan, class ini perlu diimpor:
import java.io.Console;Contoh implementasi:
import java.io.Console;
public class InputConsole {
public static void main(String[] args) {
String nama;
int usia;
// Membuat objek Console
Console con = System.console();
// Mengisi variabel nama dan usia melalui Console
System.out.print("Inputkan nama: ");
nama = con.readLine();
System.out.print("Inputkan usia: ");
usia = Integer.parseInt(con.readLine());
// Menampilkan isi variabel
System.out.println("Nama kamu adalah: " + nama);
System.out.println("Saat ini berusia " + usia + " tahun");
}
}Beberapa catatan penting:
-
Fungsi
readLine()hanya mengembalikan tipe String. Untuk mengambil input numerik, diperlukan konversi eksplisit, misalnya:int usia = Integer.parseInt(con.readLine());
-
Karena
Consoleterbatas pada lingkungan console, penggunaan di IDE biasanya menghasilkan null object, sehingga program tidak dapat berjalan secara langsung di sana.
-
Buka terminal atau CMD.
-
Masuk ke direktori tempat file
InputConsole.javadisimpan. -
Kompilasi file:
javac InputConsole.java
-
Jalankan program:
java InputConsole
Langkah-langkah ini memastikan program dapat berjalan menggunakan class Console di lingkungan command line.
Setelah mengenal berbagai cara mengambil input dari keyboard untuk program berbasis teks, penting juga memahami mekanisme output.
Java menyediakan beberapa metode untuk menampilkan output ke layar:
System.out.print()System.out.println()System.out.format()
Kedua metode digunakan untuk menampilkan teks, namun terdapat perbedaan dalam cara pencetakan:
print(): menampilkan teks apa adanya tanpa menambahkan baris baru.println(): menampilkan teks kemudian menambahkan baris baru secara otomatis.
Contoh penggunaan:
package eksperimen;
public class PrintVsPrintln {
public static void main(String[] args) {
System.out.print("Ini teks yang dicetak dengan print()");
System.out.println(" sedangkan ini teks yang dicetak dengan println()");
System.out.print("Pakai print() lagi");
}
}Hasil eksekusi:
Ini teks yang dicetak dengan print() sedangkan ini teks yang dicetak dengan println()
Pakai print() lagi
Dengan memahami perbedaan ini, penempatan teks dan format output dapat dikontrol dengan lebih presisi.
Dalam beberapa kasus, saat menggunakan print() atau println(), perlu menggabungkan teks dari variabel dengan teks lain.
Contoh:
String namaDepan = "Petani";
String namaBelakang = "Kode";Untuk menampilkannya, dapat menggunakan beberapa pernyataan print():
System.out.print(namaDepan);
System.out.print(namaBelakang);Hasilnya:
PetaniKode
Namun, cara yang lebih efisien adalah menggabungkan string menggunakan operator +:
System.out.print(namaDepan + namaBelakang);Jika ingin menambahkan spasi antar kata:
System.out.print(namaDepan + " " + namaBelakang);Hasilnya:
Petani Kode
Penggabungan string dengan operator + mempermudah penulisan kode dan membuatnya lebih rapi, terutama saat menampilkan beberapa variabel sekaligus.
Untuk penggabungan string yang lebih kompleks, Java menyediakan metode format(), yang memungkinkan pengaturan teks dengan placeholder.
Contoh penggunaan:
package eksperimen;
public class FormatString {
public static void main(String[] args) {
String namaDepan = "Petani";
String namaBelakang = "Kode";
System.out.format("Nama saya %s %s %n", namaDepan, namaBelakang);
}
}Penjelasan:
%sdigunakan sebagai placeholder untuk tipe data string.%duntuk bilangan bulat (desimal).%funtuk bilangan pecahan (floating point).%nuntuk membuat baris baru (alternatif:\n).
Metode format() memungkinkan penggabungan teks dan variabel dengan lebih terstruktur, terutama saat menampilkan beberapa nilai sekaligus.
Untuk informasi lebih lengkap mengenai format specifiers, dapat merujuk ke dokumentasi resmi Java.
