Modul 4 โ Input & Output
๐ฅ Modul 4 โ Input & Output
Setiap program yang interaktif perlu berkomunikasi dengan pengguna: menampilkan informasi (output) dan menerima data (input). Java menyediakan berbagai cara untuk melakukan keduanya.
printf dan String.format(), serta membaca input dari keyboard menggunakan Scanner dengan benar.๐ค Output di Java
Ada beberapa cara untuk menampilkan output ke konsol. Mari kita bahas yang paling umum.
1. System.out.println() dan System.out.print()
Cara paling sederhana untuk mencetak teks.
String nama = "Siti";
int umur = 22;
double ipk = 3.85;
System.out.println("Nama: " + nama + ", Umur: " + umur);
// Output: Nama: Siti, Umur: 22
2. System.out.printf() โ Output Terformat
printf memungkinkan kita mengontrol format tampilan, terutama untuk angka.
System.out.printf("Nama: %s, Umur: %d, IPK: %.2f%n", nama, umur, ipk);
// Output: Nama: Siti, Umur: 22, IPK: 3.85
3. String.format() โ Menyimpan String Terformat
Jika ingin menyimpan hasil format ke dalam variabel (untuk digunakan nanti), gunakan String.format().
String pesan = String.format("%-10s | %3d | %.2f", nama, umur, ipk);
System.out.println(pesan);
// Output: Siti | 22 | 3.85
::
๐ Format Specifier Penting
Berikut adalah format specifier yang paling sering digunakan. Klik tab untuk melihat kategori:
| Specifier | Tipe Data | Contoh |
|---|---|---|
%s | String | "Budi" |
%d | int / long | 42 |
%f | float / double | 3.140000 |
%c | char | 'A' |
%b | boolean | true |
%n | newline (lintas platform) | โ |
| Specifier | Arti | Contoh | Hasil |
|---|---|---|---|
%.2f | 2 desimal | 3.14159 | 3.14 |
%05d | padding nol (lebar 5) | 42 | 00042 |
%,d | koma ribuan | 1000000 | 1,000,000 |
%+d | selalu tampilkan tanda | 5 | +5 |
| Specifier | Arti | Contoh | Hasil |
|---|---|---|---|
%-10s | rata kiri, lebar 10 | "Budi" | "Budi " |
%10s | rata kanan, lebar 10 | "Budi" | " Budi" |
int angka = 42;
double pi = 3.14159;
String teks = "Java";
System.out.printf("1. %d%n", angka); // 42
System.out.printf("2. %05d%n", angka); // 00042
System.out.printf("3. %.2f%n", pi); // 3.14
System.out.printf("4. %-10s|%10s%n", teks, teks); // Java | Java
int angka = 42;
double pi = 3.14159;
String teks = "Java";
System.out.printf("1. %d%n", angka); // 42
System.out.printf("2. %05d%n", angka); // 00042
System.out.printf("3. %.2f%n", pi); // 3.14
System.out.printf("4. %-10s|%10s%n", teks, teks); // Java | Java
๐ฅ Input dengan Scanner
Untuk membaca input dari pengguna, kita menggunakan kelas Scanner yang berada dalam paket java.util.
๐งฑ Struktur Dasar
import java.util.Scanner; // โ wajib di baris paling atas file!
public class ContohInput {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Masukkan nama Anda: ");
String nama = scanner.nextLine(); // baca satu baris penuh
System.out.print("Masukkan umur: ");
int umur = scanner.nextInt(); // baca integer
System.out.print("Masukkan IPK: ");
double ipk = scanner.nextDouble(); // baca double
System.out.printf("Halo %s! Umur %d, IPK %.2f%n", nama, umur, ipk);
scanner.close(); // tutup scanner setelah selesai
}
}
๐ Method-Method Penting Scanner
| Method | Kegunaan |
|---|---|
nextLine() | Baca satu baris penuh (termasuk spasi) |
next() | Baca satu kata (berhenti di spasi) |
nextInt() | Baca nilai integer |
nextDouble() | Baca nilai double |
nextFloat() | Baca nilai float |
nextBoolean() | Baca nilai boolean (true/false) |
nextLong() | Baca nilai long |
โ ๏ธ Bug Klasik โ nextInt() lalu nextLine()
Ini adalah jebakan yang sering membuat pemula bingung.
Scanner scanner = new Scanner(System.in);
System.out.print("Masukkan umur: ");
int umur = scanner.nextInt();
System.out.print("Masukkan nama: ");
String nama = scanner.nextLine(); // โ langsung membaca Enter kosong!
System.out.printf("Umur: %d, Nama: %s%n", umur, nama);
Jika dijalankan, setelah memasukkan umur, program langsung lanjut tanpa memberi kesempatan mengetik nama.
Penyebab: nextInt() hanya membaca angka, tetapi meninggalkan karakter newline (\n) di buffer. nextLine() kemudian membaca newline tersebut sebagai input kosong.
scanner.nextLine() setelah nextInt() untuk membuang sisa newline.Scanner scanner = new Scanner(System.in);
System.out.print("Masukkan umur: ");
int umur = scanner.nextInt();
scanner.nextLine(); // โ buang sisa Enter
System.out.print("Masukkan nama: ");
String nama = scanner.nextLine(); // โ sekarang baca dengan benar
System.out.printf("Umur: %d, Nama: %s%n", umur, nama);
nextInt(), nextDouble(), atau next() yang tidak membaca newline, panggil nextLine() sekali untuk membersihkan buffer sebelum membaca baris teks berikutnya.๐งช Latihan Praktik
Buat program Java yang:
- Meminta pengguna memasukkan:
- Nama lengkap (bisa terdiri dari dua kata)
- Usia (integer)
- Tinggi badan dalam meter (double)
- Apakah sudah menikah? (boolean:
true/false)
- Menampilkan semua data tersebut dalam format tabel yang rapi menggunakan
printf, dengan lebar kolom yang sesuai. - Menampilkan usia dalam format "XX tahun" dengan padding nol (misal: 05 tahun).
Contoh interaksi:
Masukkan nama lengkap: Andi Saputra
Masukkan usia: 5
Masukkan tinggi (m): 1.65
Sudah menikah? (true/false): false
+----------------+----------+--------+-----------+
| Nama | Usia | Tinggi | Menikah? |
+----------------+----------+--------+-----------+
| Andi Saputra | 05 tahun | 1.65 m | false |
+----------------+----------+--------+-----------+
System.out.printf() dengan format seperti "| %-14s | %02d tahun | %.2f m | %-9s |%n" untuk mencetak baris tabel.๐บ Video Penjelasan
Tonton video berikut untuk penjelasan lebih detail tentang input/output di Java (25 menit):
โจ Kesimpulan
Apa yang Telah Dipelajari
- โ
Output dengan
println,printf, danString.format() - โ Format specifier untuk berbagai tipe dan format angka
- โ
Input dengan
Scannerdan method-methodnya - โ
Bug klasik
nextInt()diikutinextLine()dan solusinya
Selanjutnya
Modul 5: Struktur Kontrol (Percabangan) โ if, else if, switch, dan logika percabangan.