Sampai titik ini, seluruh data yang kita olah sudah tertanam di dalam kode. Padahal banyak program nyata justru menerima datanya dari luar pada saat program dinyalakan: nama berkas yang ingin diproses, alamat server tujuan, atau angka-angka yang ingin dihitung. Java menyediakan jalur paling sederhana untuk kebutuhan tersebut lewat argumen command line — teks-teks yang ditulis pengguna setelah nama class saat menjalankan program, dan diserahkan JVM kepada kita dalam bentuk array args pada method main. Pada Chapter ini kita akan mempelajari cara membaca argumen tersebut, mengubahnya menjadi angka, dan menangani kondisi ketika pengguna lupa mengisinya.

Bentuk Umum args #

Tanda tangan public static void main(String[] args) yang selama ini kita tulis tanpa banyak tanya ternyata menyimpan pintu masuk data. Setiap kata yang dipisahkan spasi setelah nama program akan mengisi satu elemen args, bertipe String, berurutan mulai indeks 0. Program berikut mencetak seluruh argumen yang diterimanya:

public class DaftarArgumen {
    public static void main(String[] args) {
        System.out.println("Jumlah argumen: " + args.length);
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[" + i + "] = " + args[i]);
        }
    }
}

Output yang Dihasilkan:

text
Jumlah argumen: 3
args[0] = Budi
args[1] = Siti
args[2] = Dewi

Bila dijalankan dengan perintah java DaftarArgumen.java Budi Siti Dewi, JVM membuat array berisi tiga string dan menyerahkannya ke args. Mari kita telaah baris-baris kode di atas:

  1. Baris 3 (System.out.println("Jumlah argumen: " + args.length)): mencetak panjang array args terlebih dahulu sehingga kita langsung tahu berapa banyak argumen yang diberikan pengguna.
  2. Baris 4 (for (int i = 0; ...) {): perulangan biasa berbasis indeks dipilih alih-alih enhanced for karena kita ingin menampilkan nomor indeks tiap argumen.
  3. Baris 5 (System.out.println("args[" + i + "] = " + args[i])): menggabungkan nomor indeks dan isi argumen dalam satu baris keluaran.

Perlu dicatat bahwa tanda kutip dapat dipakai untuk mengirim satu argumen yang mengandung spasi, misalnya java DaftarArgumen "Budi Santoso" menghasilkan satu argumen, bukan dua.

Mengubah Argumen Menjadi Angka #

Argumen selalu bertipe String, sehingga ketika kita membutuhkan angka untuk perhitungan, konversi harus dilakukan secara eksplisit. Method Integer.parseInt dari class Integer mengubah teks menjadi nilai int; apabila teks ternyata bukan angka yang sah, method tersebut melempar NumberFormatException. Program penjumlahan berikut memanfaatkan pola tersebut:

public class PenjumlahanArgumen {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("Cara pakai: java PenjumlahanArgumen <angka> <angka> ...");
            return;
        }

        int total = 0;
        for (String arg : args) {
            int nilai = Integer.parseInt(arg);
            total += nilai;
        }
        System.out.println("Total: " + total);
    }
}

Output yang Dihasilkan:

text
Total: 50

Mari kita bedah logika program di atas:

  1. Baris 3-6 (if (args.length == 0) ...): memeriksa terlebih dahulu apakah pengguna memberikan argumen. Bila kosong, program mencetak petunjuk cara pakai lalu berhenti melalui return — jauh lebih ramah daripada langsung gagal dengan exception.
  2. Baris 8-11 (for (String arg : args) ...): enhanced for loop menelusuri setiap argumen satu per satu tanpa perlu mengelola indeks.
  3. Baris 9 (int nilai = Integer.parseInt(arg)): mengubah teks argumen menjadi bilangan bulat. Untuk bilangan desimal, padanannya adalah Double.parseDouble.
  4. Baris 10 (total += nilai): menjumlahkan setiap nilai ke variabel penampung.

Jumlah Argumen yang Tidak Pasti #

Karena args adalah array biasa, panjangnya sepenuhnya ditentukan pengguna. Program yang baik memeriksa jumlah argumen sebelum mengakses elemennya. Akses args[0] pada program yang dijalankan tanpa argumen akan melempar ArrayIndexOutOfBoundsException — dan pesan stack trace yang panjang jelas bukan pengalaman yang menyenangkan bagi pengguna. Kebiasaan memvalidasi di awal program seperti pada contoh PenjumlahanArgumen di atas sebaiknya dibiasakan sejak dini.

Untuk program kecil, pola if (args.length < N) diikuti pencetakan petunjuk sudah memadai. Ketika program tumbuh menjadi alat yang lebih serius dengan flag seperti --file dan --output, pola ini berkembang menjadi parsing argumen terstruktur — pembahasan mendalamnya menunggu Chapter Parsing Argumen Command Line di Section Scripting dan Automation.

Referensi #

Berkas Sumber

Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.

DaftarArgumen.java

Unduh berkas
java
public class DaftarArgumen {
    public static void main(String[] args) {
        System.out.println("Jumlah argumen: " + args.length);
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[" + i + "] = " + args[i]);
        }
    }
}

PenjumlahanArgumen.java

Unduh berkas
java
public class PenjumlahanArgumen {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("Cara pakai: java PenjumlahanArgumen <angka> <angka> ...");
            return;
        }

        int total = 0;
        for (String arg : args) {
            int nilai = Integer.parseInt(arg);
            total += nilai;
        }
        System.out.println("Total: " + total);
    }
}