You are on page 1of 68

Pengantar Bahasa Java

Hal 54 BAB II
PENGANTAR BAHASA JAVA

Tujuan Materi
Setelah menyelesaikan bagian ini anda diharapkan:
9 Mampu membuat program Java sederhana.
9 Mampu membuat program Java yang berisi proses input / output
data.
9 Mampu membuat program Java menggunakan class
JOptionPane.
9 Mampu membuat program Java yang berisi proses menangkap
kesalahan proses.
9 Mampu membuat program Java yang melibatkan konstanta dan
komentar.

2.1 Pengantar

Pada bagian ini kita akan berbicara tentang dasar-dasar


pemrograman Java, meliputi:
1. Persiapan membuat program Java.
2. Membuat program Java pertama.
3. Tipe data dan variabel.
4. Operator aritmatika, relasi dan logika.
5. Manipulasi data.
6. Konversi data.
7. Memformat tampilan angka.
8. Penggunaan class JOptionPane.
9. Menangkap kesalahan proses.
10. Konstanta.
11. Komentar di dalam program.

- 15 -
Pengantar Bahasa Java

2.2 Persiapan Membuat Program Java

Jalankan EditPlus, pilih menu “File” sub menu “New”. Pada kotak sub
menu ini terdapat beberapa tipe file yang bisa dipilih : HTML, C/C++,
Java, Perl termasuk “Normal Text”. Pilihlah tipe file “Java”.

Proses ini juga bisa dilakukan dengan melakukan click icon yang
ada pada toolbar. Selanjutnya EditPlus akan menampilkan sub menu
untuk memilih jenis file yang akan dibuat.

- 16 -
Pengantar Bahasa Java

1. Click icon ini

2. Sorot item ini

Kelebihan dari EditPlus –dan ini salah satu alasan mengapa kami
menggunakannya sebagai text editor—adalah adanya template
default yang memungkinkan pengetikan program menjadi lebih
mudah. Perintah “create a new Java document” misalnya, akan
mengaktifkan template default Java :

Lokasi
kursor

- 17 -
Pengantar Bahasa Java

Setelah template ditampilkan, lokasi kursor langsung diletakkan di


lokasi yang memerlukan pengetikan user. Sebuah program Java
terbentuk dari sejumlah class, sehingga lokasi kursor akan diarahkan
di belakang kata kunci class, tujuannya agar user segera mengisi
bagian ini sebagai suatu keharusan dari program Java. Anda bisa
mencoba fasilitas ini untuk membuat file bertipe lain seperti C/C++,
Perl atau bahkan HTML.

Hal lain yang menjadi keunggulan EditPlus adalah penggunaan warna


pada beberapa kata yang dianggap penting (syntax-highlight). Konsep
ini sangat menguntungkan karena akan memudahkan pembacaan
program karena identitas yang berupa keyword ditulis dengan warna
berbeda dengan variabel. Seluruh kode program pada buku ini ditulis
dengan aturan:
• Seluruh teks program ditulis dengan font Courier New ukuran 9.
• Kata kunci ditulis dengan style bold atau ditulis tebal, misalnya
class.
• Nama class standar ditulis dengan style bold-italic atau ditulis
tebal dan miring, misalnya String.
• Tanda awal blok statement “{“ dan akhir blok statement “}” ditulis
pada kolom yang sama.
• Komentar ditulis dengan warna hijau redup, misalnya : // teks.

Nomor urut baris pada kolom paling kiri berfungsi sebagai indikator
baris instruksi, bukan merupakan bagian dari kode program. Jadi
nomor ini tidak usah ditulis.

2.3 Membuat Program Java Pertama

Sekarang kita siap untuk membuat program Java. Ketik tujuh baris
program berikut ini. Sekali lagi, nomor baris pada kolom paling kiri
tidak usah ditulis.

- 18 -
Pengantar Bahasa Java

Program 2.1

1 class Satu
2 {
3 public static void main (String[] args)
4 {
5 System.out.println ("Hello World!");
6 }
7 }

Simpan file ini dengan nama


Setiap kata pada nama class Satu.java. Sebuah program
diawali dengan huruf kapital Java disimpan dengan nama
yang sama dengan nama class
pada file tersebut, persis sama
huruf kapital maupun huruf kecilnya. Ekstensi file harus .java sebagai
indikator file program Java. Program Java yang sudah dicompile akan
mendapat ekstensi .class.

- 19 -
Pengantar Bahasa Java

Kita sudah memiliki sebuah program Java. Langkah selanjutnya


adalah mengcompile program ini. Gunakan short-cut yang sudah kita
buat untuk mengcompile program Java melalui menu “Tools”.

Nama file program

Java akan menampilkan sebuah DOS based-window selama proses


kompilasi program.

Pesan di atas menyatakan bahwa kode program ini tidak


mengandung kesalahan. Berbeda dengan beberapa bahasa
pemrograman konvensional yang meng-compile kode sumber menjadi
file berekstensi .EXE, Java meng-compile kode sumber menjadi file
dengan ekstensi .class. File inilah yang bisa dijalankan oleh interpreter

- 20 -
Pengantar Bahasa Java

Java atau Java Virtual Machine (JVM). Kita dapat menjalankan


program tadi dengan short-cut kedua pada menu Tools.

Sekali lagi, Java akan menggunakan layar DOS untuk menampilkan


hasil program. Window model ini akan digunakan untuk output
program selanjutnya.

Anda baru saja membuat sebuah program Java. Langkah-langkah


dalam mempersiapkan dan membuat program ini akan terus kita
gunakan untuk membuat program-program berikutnya. Seringlah
berlatih membuat program agar anda terbiasa dan trampil mengasah
logika.

- 21 -
Pengantar Bahasa Java

Secara umum untuk menampilkan


System.out.print() dan informasi ke layar digunakan
System.out.println() perintah System.out.print() atau
merupakan dua instruksi System.out.println().
dasar untuk menampilkan Perbedaannya terletak pada posisi
informasi kursor setelah informasi tercetak di
layar. Jika kita menggunakan
System.out.print() maka posisi kursor ada di posisi akhir setelah
informasi yang ditampilkan, sedangkan jika kita menggunakan
System.out.println() posisi kursor ada pada baris berikutnya.
Beberapa informasi yang akan ditampilkan dipisahkan dengan
karakter “+”.

Penulisan Output

1 System.out.println ("Informasi"); Informasi


2 System.out.println (7); 7
3 System.out.println ("Angka " + 7); Angka 7
4 System.out.println (11 + " angka"); 11 angka
5 System.out.println (5+7); 12
6 System.out.println (5 + “ + “ + 7 + 5 + 7 = 57
“ = “ + 5+7); 5 + 7 = 12
7 System.out.println (5 + “ + “ + 7 +
“ = “ + (5+7));

Gunakan pasangan kurung buka “(“ dan kurung tutup “)” pada
ekspresi matematis seperti pada contoh baris 7, karena pada
System.out.print() atau System.out.println() karakter “+” berarti
penggabungan string. Contoh pada baris 5 tetap bisa berfungsi
dengan baik tanpa pasangan “(“ dan “)“ karena ekspresi tersebut
merupakan informasi pertama yang akan ditampilkan. Cobalah latihan
dengan berbagai model informasi agar didapat pemahaman yang
lebih baik.

- 22 -
Pengantar Bahasa Java

Program 2.2

1 class CetakData
2 {
3 public static void main (String[] args)
4 {
5 System.out.println ("Latihan program Java");
6 System.out.println ("--------------------");
7 System.out.println ("4 * 3 = “ + 4*3);
8 }
9 }

Program kedua kita beri nama CetakData.java, sekali lagi nama file
harus sama dengan nama kelas termasuk dalam hal besar / kecilnya
huruf. Lakukan proses compile program dengan cara seperti pada
program pertama, lalu jalankan program ini.

Berbeda dengan operator penjumlahan “+”, operator aritmatika yang


lain seperti perkalian “*” tidak memerlukan perlakuan khusus berupa
penyisipan pasangan kurung “(“ dan “)”. Operator selain penjumlahan
tidak menimbulkan salah-tafsir bagi compiler Java.

Penggunaan karakter escape-sequence bisa mempengaruhi bentuk


informasi yang ditampilkan.

- 23 -
Pengantar Bahasa Java

Program 2.3

1 class EscapeSequence1
2 {
3 public static void main (String[] args)
4 {
5 System.out.println ("Text baris pertama");
6 System.out.println ("\nText baris kedua");
7 }
8 }

Pada baris 6 kita menyisipkan karakter “\n” di depan informasi yang


akan ditampilkan. Program ini memberikan output sebagai berikut:

Walaupun secara langsung kita tidak menambah baris kosong di


antara kedua string tersebut, akibat dari karakter “\n” komputer akan
menambahkan baris kosong secara otomatis. Fungsi dari “\n” adalah
menurunkan kursor ke baris berikutnya, lalu informasi yang ada di
belakangnya dicetak mulai posisi baru tersebut. Cobalah untuk
melatih penggunaan karakter “\n” ini pada berbagai string dan pada
berbagai posisi. Anda akan memperoleh hasil yang –kadang-
kadang—di luar perkiraan anda.

Selain karakter “\n” Java juga mengenal karakter “\t” sebagai karakter
escape-sequence untuk berpindah ke tabulasi berikutnya pada baris
yang sama.

- 24 -
Pengantar Bahasa Java

Program 2.4

1 class EscapeSequence2
2 {
3 public static void main (String[] args)
4 {
5 System.out.println ("Satu\tDua\tTiga");
6 System.out.println ("Empat\tLima\tEnam");
7 }
8 }

Output program:

Beberapa contoh program sebelumnya secara tidak langsung telah


menggambarkan adanya blok program. Seluruh instruksi yang ditulis
di antara karakter kurung kurawal buka “{“ dan kurung kurawal tutup
“}” disebut instruksi dalam satu blok. Jumlah karakter awal blok harus
sama banyak dengan jumlah karakter akhir blok. Program anda tidak
bisa di-compile jika jumlah pasangan karakter ini tidak seimbang. Ada
banyak sebab mengapa sejumlah instruksi harus ditulis di dalam satu
blok. Pada bagian selanjutnya anda akan melihat konsep blok lebih
jelas lagi.

2.4 Tipe Data dan Variabel

Hampir bisa dipastikan bahwa sebuah program selalu membutuhkan


lokasi memori untuk menyimpan data yang sedang diproses. Kita
tidak pernah tahu di lokasi memori mana komputer akan meletakkan

- 25 -
Pengantar Bahasa Java

data dari program kita.


Tipe data hanya menyatakan Kenyataan ini menimbulkan
model data yang diproses, kesulitan bagi kita untuk
bukan menyatakan tempat mengambil data tersebut pada
untuk menyimpan data saat dibutuhkan. Maka
tersebut dikembangkanlah konsep
variabel.

Variabel adalah istilah bagi lokasi memori yang ditetapkan untuk


menyimpan data tertentu, sehingga istilah nama-variabel merujuk
kepada nama bagi lokasi memori tersebut. Proses penyimpanan
maupun pengambilan data selanjutnya akan merujuk ke nama
variabel yang bersesuaian; kita tidak perlu tahu di lokasi memori mana
sebenarnya data itu disimpan oleh komputer. Komputer akan
mengatur semua ini untuk kita.

Secara umum ada tiga bentuk data :


1. Numerik, data yang berbentuk angka atau bilangan. Data numerik
bisa dibagi dua kategori :
• Bilangan bulat (integer), yaitu bilangan yang tidak
mengandung angka pecahan.
• Bilangan pecahan (float), yaitu bilangan yang mengandung
angka pecahan.

2. Karakter, data yang berbentuk karakter atau deretan karakter.


Data karakter bisa dibagi menjadi dua kategori :
• Karakter tunggal
• Deretan karakter
3. Logika, yaitu tipe data dengan nilai benar (true) atau salah (false).

Java membawa beberapa tipe data dasar beserta class yang


bersesuaian dengan tipe data tersebut. Class-class ini disediakan
untuk menambah utilitas dari tipe data tersebut, seperti konversi suatu
tipe data numerik ke tipe data yang lain. Beberapa tipe data dan class
yang direkomendasikan pada buku ini diperlihatkan pada tabel berikut
ini:

- 26 -
Pengantar Bahasa Java

Tipe Data Class Keterangan

int Integer Tipe data bilangan bulat

double Double Tipe data bilangan pecahan

char Character Tipe data karakter tunggal

boolean Boolean Tipe data logika

String,
Tipe data deretan karakter (string)
StringBuffer

Bentuk umum pendeklarasian variabel:

Tipe_data namaVariabel1 [= nilai_awal];

Tipe_data namaVariabel1 [= nilai_awal] [, namaVariabel2 [= nilai_awal] ..];

Bentuk pertama menyatakan bahwa kita mendeklarasikan sebuah


variabel dengan tipe tertentu. Jika nilai_awal kita gunakan berarti kita
memberikan nilai awal kepada variabel tersebut secara langsung.
Penulisan yang berada di antara karakter “[“ dan “]” bersifat optional,
artinya boleh digunakan boleh juga tidak digunakan.

Bentuk kedua menyatakan bahwa kita mendeklarasikan beberapa


variabel dengan tipe yang sama. Seperti pada bentuk pertama, setiap
variabel yang dideklarasikan ini juga boleh diberi nilai awal secara
langsung.

Contoh deklarasi variabel dalam Java :

int bilanganBulat;

char karakter;

- 27 -
Pengantar Bahasa Java

Kita mendeklarasikan dua variabel, yaitu variabel bilanganBulat yang


bertipe int dan variabel karakter yang bertipe char. Tipe data ditulis
lebih dulu baru kemudian diikuti dengan nama variabel.

Contoh lain deklarasi variabel:

int angka_1, angka_2=5;

Kita mendeklarasikan dua variabel angka_1 dan angka_1 masing-


masing bertipe int. Variabel angka_2 kita beri nilai awal 5, sedangkan
variabel angka_1 tidak kita beri nilai awal.

Java tidak mengijinkan ada


Format nama variabel: variabel yang dideklarasikan
• Diawali dengan huruf kecil tanpa diberi nilai awal. Java
• Jika nama variabel lebih dari telah belajar dari bahasa
satu kata, kata ke-2, 3 dst diawali pemrograman sebelumnya
dengan huruf kapital dan ditulis bahwa kasus pemberian nilai
menyatu awal menjadi salah satu
sumber kesalahan. Kita coba
membuat sebuah program yang berisi deklarasi variabel tanpa diberi
nilai awal, kemudian kita beri instruksi untuk menampilkan isi variabel
tersebut.

Program 2.5

1 class Dua
2 {
3 public static void main (String[] args)
4 {
5 int bilanganBulat;
6
7 System.out.println (bilanganBulat);

- 28 -
Pengantar Bahasa Java

8 }
9 }

Compiler Java akan memberikan suatu pesan kesalahan:

Java memberikan pesan kesalahan bahwa variabel bilanganBulat


belum diinisialisasi atau diberi harga awal. Proses pemberian harga
atau nilai ke sebuah variabel dapat dilakukan melalui 3 cara :

1. Pemberian nilai pada saat program dibuat.


Dengan cara ini sebuah variabel diberi nilai dengan menuliskan
langsung di dalam kode program pada saat variabel tersebut
dideklarasikan.

int bilanganBulat = 55;

Variabel bilanganBulat dideklarasikan sebagai variabel bertipe int


dan langsung diberikan harga awal 55. Cara lain adalah dengan
memberikan nilai pada bagian lagi dari kode program.

bilanganBulat = 11;

Kita memberikan nilai 11 kepada variabel bilanganBulat langsung


pada salah satu baris program. Kita tidak perlu mendefinisikan
tipe data bagi variabel ini lagi. Cara mana yang akan digunakan
terserah kepada programmer, tergantung situasi yang dihadapi.

- 29 -
Pengantar Bahasa Java

2. Pemberian nilai melalui parameter program.


Parameter program adalah data yang dilewatkan kepada sebuah
program pada saat program tersebut akan dijalankan. Beberapa
perintah DOS menggunakan cara ini untuk melewatkan parameter
ke dalam suatu program atau instruksi. Misalnya kita menuliskan
perintah untuk menyalin file :

nama program / Parameter 1 Parameter 2


instruksi

Secara tidak sadar kita telah menerapkan metode passing-


parameter bagi perintah copy. Dalam hal ini perintah copy
membutuhkan dua parameter :
• Pertama, jenis file yang akan disalin, bisa jadi termasuk path
dan directory tertentu, misalnya “c:\myFile\*.* “ dan
sebagainya Æ source.
• Kedua, lokasi tujuan kemana file-file itu akan disalin Æ target.

Serupa dengan instruksi copy tersebut, seandainya kita membuat


program Java untuk menjumlahkan dua bilangan, kedua bilangan
itu bisa diinputkan melalui parameter program. Katakanlah
misalnya kita mengetikkan

maka komputer akan menampilkan hasil penjumlahan 7 dan 5


yaitu 12. Model eksekusi program ini dilakukan jika kita tidak
menggunakan EditPlus; sedangkan jika kita menggunakan
EditPlus maka kita bisa mengirimkan parameter program dengan
mengaktifkan fasilitas ini pada menu “Tools” :

- 30 -
Pengantar Bahasa Java

Aktifkan bagian ini

Check pada
bagian ini

Dengan demikian setiap kita menjalankan program komputer


akan menanyakan parameter yang akan kita kirimkan. Langsung
saja kita buat sebuah program yang akan menjumlahkan dua
bilangan yang dikirimkan sebagai parameter program.

Program 2.6

1 class JumlahBilangan
2 {
3 public static void main (String[] args)
4 {
5 int angka_1 = Integer.parseInt (args[0]);
6 int angka_2 = Integer.parseInt (args[1]);
7 int angka_3 = angka_1 + angka_2;

- 31 -
Pengantar Bahasa Java

8
9 System.out.println ("Angka_1 = " +
angka_1);
10 System.out.println ("Angka_2 = " +
angka_2);
11 System.out.println ("Angka_3 = " +
angka_3);
12 }
13 }

Variabel angka_1 menyimpan angka pertama dan variabel


angka_2 menyimpan angka kedua yang akan diproses. Hasil
penjumlahan kedua bilangan ini disimpan di variabel angka_3.
Compile program ini lalu jalankan. Ketikkan kedua bilangan yang
akan kita jumlahkan pada area yang disediakan.

Misalnya kita memasukkan data 11 dan 4, maka komputer akan


menampilkan output sebagai berikut:

Contoh lain lagi, sekarang kita buat sebuah program untuk


memberikan ucapan salam kepada seseorang dengan nama yang
diinputkan sebagai parameter program.

- 32 -
Pengantar Bahasa Java

Program 2.7

1 class TulisNama
2 {
3 public static void main (String[] args)
4 {
5 String nama = args[0];
6
7 System.out.println ("Hallo " + nama);
8 }
9 }

Java menyimpan parameter program di dalam variabel args yang


bertipe array. Anda boleh saja mengganti nama args ini dengan
nama lain sesuai selera. Parameter pertama disimpan di variabel
args[0], parameter kedua disimpan di variabel args[1] dan
seterusnya. Instruksi pada baris 5 menyatakan bahwa kita
mendeklarasikan variabel nama bertipe String langsung
diinisialisasi dengan data argumen pertama (args[0]). Tidak usah
bingung dengan penulisan seperti args[0], karena sampai saat ini
kita belum berdiskusi tentang variabel array, maka anggaplah
penulisan seperti args[0] sebagai suatu keharusan. Pembahasan
tentang variabel array akan diuraikan di bab berikutnya.

Compile program tersebut, lalu jalankan. EditPlus akan


menampilkan sebuah area untuk mengetikkan parameter
program. Gunakan spasi sebagai pemisah antar parameter.

- 33 -
Pengantar Bahasa Java

Misalnya kita mengirimkan parameter “Wawan”, setelah kita click


button ‘OK’ komputer akan menampilkan hasil di layar :

Anda bisa mencoba dengan memberikan parameter yang lain.


Sekarang, bagaimana kalau kita ingin memberikan parameter
“Ahmad Sanjaya” misalnya yang berisi lebih dari satu data ?

Jika kita memberikan parameter seperti ini komputer akan


memberikan output berupa :

String “Ahmad Sanjaya” terdiri dari 2 kata, sedangkan program


kita hanya mampu menangkap satu parameter saja. Dalam
kondisi seperti ini pada saat komputer menanyakan parameter
program kita berikan dengan menambahkan tanda kutip ganda di
awal dan akhir string. Tanda kutip ganda merupakan simbol untuk
menyatakan data string.

Output program:

- 34 -
Pengantar Bahasa Java

Program berikut ini akan menampilkan beberapa parameter


program. Kita akan mengakses langsung nilai argumen
berdasarkan nomor indeksnya.

Program 2.8

1 class BacaParameter
2 {
3 public static void main (String[] args)
4 {
5 System.out.println ("Parameter 1: " +
args[0]);
6 System.out.println ("Parameter 2: " +
args[1]);
7 System.out.println ("Parameter 3: " +
args[2]);
8 }
9 }

Pada bagian selanjutnya dari bab ini kita akan membahas


kesalahan yang mungkin terjadi akibat pembacaan parameter
program yang keliru, misalnya ingin dibaca 3 parameter tetapi
user hanya memberikan 2 parameter atau kurang.

3. Pemberian nilai melalui dialog dengan user.


Metode ketiga untuk memberikan data ke variabel adalah dengan
melakukan dialog langsung dengan user. Cara ini banyak
digunakan pada saat program membutuhkan data-data dari user
untuk suatu proses. Perhatikan program singkat berikut ini :

- 35 -
Pengantar Bahasa Java

Program 2.9

1 import java.io.*;
2
3 class EntryData
4 {
5 public static void main (String[] args)
throws Exception
6 {
7 DataInputStream dis = new DataInputStream
(System.in);
8
9 System.out.print (“Ketik nama anda: “);
10 String nama = dis.readLine();
11
12 System.out.println (“Halo “ + nama);
13 }
14 }

DataInputStream adalah class dari Java yang menangani proses


pemasukan data dari input-device, misalnya keyboard. Variabel
dis adalah objek yang digunakan untuk menampung data yang
diinputkan tersebut. Baris 10 menunjukkan cara mengambil data
dari keyboard menggunakan method readLine(). Data masukan
yang diperoleh ini akan disimpan di variabel nama. Sebagai
catatan, data yang diberikan oleh user selalu dianggap bertipe
String, sehingga untuk memperoleh data numerik perlu ada
mekanisme mengkonversi data tersebut.

Contoh eksekusi program:

- 36 -
Pengantar Bahasa Java

2.5 Operator Aritmatika, Relasi dan Logika

Java beberapa operator aritmatika dan operator logika. Operator


aritmatika digunakan pada ekspresi matematis, sedangkan operator
logika digunakan pada ekspresi logika, misalnya membandingkan nilai
variabel. Tabel berikut ini menunjukkan operator aritmatika yang
dikenal oleh Java.

O p e ra to r F u n g si P e ngguna a n

+ P enjum lahan 20 + 3 m enghas ilk an 23

- P engurangan 20 - 3 m enghas ilk an 17

* P erk alian 20 * 3 m enghas ilk an 60

/ P em bagian 20.0 / 3 m enghas ilk an 6.67

% S is a bagi 20 % 3 m enghas ilk an 2

Tabel selanjutnya adalah tabel operator relasi. Seluruh hasil dari


penggunaan operator relasi adalah nilai true atau false, tergantung
dari hasil logikanya. Pernyataan atau ekspresi yang menggunakan
operator relasi disebut pernyataan relasi.

- 37 -
Pengantar Bahasa Java

Ope ra tor Fungsi Pe ngguna a n

20 == 3 ( apakah 20 sama
== Persamaan
dengan 3 ? )

20 != 3 ( apakah 20 tidak
!= Pertidaksamaan
sama dengan 3 ? )

Perbandingan lebih besar 20 > 3 ( apakah 20 lebih


>
dari besar dari 3 ? )

Perbandingan lebih kecil 20 < 3 ( apakah 20 lebih


<
dari kecil dari 3 ? )
20 >= 3 ( apakah 20 lebih
Perbandingan lebih besar
>= besar atau sam a dengan 3 ?
dari atau sama dengan
)
Perbandingan lebih kecil 20 <= 3 ( apakah 20 lebih
<=
dari atau sam a dengan kecil atau sam a dengan 3 ? )

Operator logika adalah operator yang digunakan untuk


menghubungkan satu atau lebih pernyataan relasi. Hasil akhirnya
adalah logika true atau false. Berikut ini diberikan tabel operator
logika.

Ope ra tor Fungsi P e ngguna a n

(20 = = 3) & & (5 < 7)


&& Logik a A ND
fals e A ND true = FA LS E

(20 = = 3) || (5 < 7)
|| Logik a OR
fals e OR true = TRUE

Logik a NOT ! (20 = = 3)


!
(k om plem en) NOT (fals e) = TRUE

- 38 -
Pengantar Bahasa Java

2.6 Konversi Data

Seringkali diperlukan suatu tipe data diproses sebagai tipe data lain,
misalnya data string angka diproses sebagai data numerik. Dalam
situasi seperti ini diperlukan konversi tipe data.

Ada dua cara melakukan konversi data :


1. Type-casting.
Type-casting adalah istilah dimana suatu data ‘dipaksa’ menjadi
tipe data lain secara sementara pada saat akan diproses.
Perhatikan program singkat berikut ini:

Program 2.10

1 class TypeCasting
2 {
3 public static void main (String[] args)
4 {
5 int x = 9;
6 int y = 4;
7 int z = x / y;
8
9 System.out.println (x + “ / “ + y + “ = “
+ z);
10 }
11 }

Kita akan menghitung “ 9/4 ”. Seharusnya perhitungan ini


menghasilkan 2.25, tetapi yang terjadi adalah 2.0 !

- 39 -
Pengantar Bahasa Java

Variabel yang terlibat dalam perhitungan ini, x dan y, bertipe int;


sedangkan variabel untuk menampung hasil perhitungan, z,
bertipe double. Ada satu aturan bahwa jika variabel yang terlibat
semuanya bertipe bilangan bulat, hasil perhitungan pun akan
bertipe bilangan bulat tidak tergantung pada tipe variabel
penampungnya; dengan kata lain hanya diambil bagian
integernya saja. Konsekuensinya adalah hasil proses yang terjadi
memiliki kesalahan. Jika salah satu atau semua operand yang
terlibat dalam ekspresi matematis bernilai pecahan maka hasilnya
juga pecahan.

Baris 7 kita modifikasi menjadi double z = (double)x / y;


Sekarang program ini memberikan hasil yang benar.

Penulisan (double) x menyatakan bahwa dalam proses


perhitungan ini nilai x diubah menjadi tipe double. Nilai aktualnya
tetap dalam tipe int. Perubahan ini hanya bersifat sementara pada
saat proses perhitungan dilakukan. Dalam hal ini yang diubah
menjadi pecahan hanya variabel x, sedangkan variabel y tetap. Ini
berbeda jika pernyataan (double) diletakkan di depan y.

Pernyataan System.out.println ( (int) (5.5 / 2) ); tidak akan


menghasilkan 2.75 tetapi 2. Hasil perhitungan sesungguhnyanya
memang 2.75, tetapi yang ditampilkan hanya bagian integernya
saja.

2. Menggunakan method khusus dari class suatu tipe data.


Kadang kala proses konversi data tidak dapat dilakukan dengan
cara type-casting, misalnya mengubah nilai numerik ke string.

- 40 -
Pengantar Bahasa Java

Program 2.11

1 class KonversiString
2 {
3 public static void main (String[] args)
4 {
5 System.out.println ((String)(5.5/2));
6 }
7 }

Program ini ditujukan untuk mengkonversi hasil perhitungan ke


dalam tipe string. Pada saat dicompile, komputer akan
memberikan pesan kesalahan :

Proses konversi seperti ini tidak diperbolehkan, sehingga perlu


dicari cara lain. Ekspresi (5.5 / 2) akan menghasilkan angka
pecahan sehingga class yang bersesuaian dengan tipe data
double adalah Double. Konversi ke tipe String dari tipe double
melalui class Double dilakukan dengan memanfaatkan method
toString().

System.out.println (Double.toString(5.5/2));

- 41 -
Pengantar Bahasa Java

Proses sebaliknya bisa saja terjadi, yaitu kita ingin melakukan


konversi tipe data string menjadi tipe data double. Kita
membutuhkan method parseDouble() dari class Double.

Program 2.12

1 class KonversiDouble
2 {
3 public static void main (String[] args)
4 {
5 System.out.println(Double.parseDouble(“5.5”));
6 }
7 }

Output program :

Method lain yang sering digunakan untuk konversi data adalah


Integer.parseInt(dataString) untuk mengkonversi variabel
dataString menjadi tipe integer.

Program 2.13

1 class KonversiInteger
2 {
3 public static void main (String[] args)
4 {
5 System.out.println(Integer.parseInt(“5”));
6 }
7 }

- 42 -
Pengantar Bahasa Java

Program KonversiInteger.java menunjukkan penggunaan method


parseInt() untuk mengubah data string “5” menjadi data numerik
5. Data string adalah tidak bisa dikenakan operasi matematis
seperti penjumlahan, sedangkan data numerik bisa dikenakan
operasi matematis. Output yang diberikan oleh program ini adalah
sebagai berikut:

Ilustrasi yang lebih jelas adalah jika kita memberikan hasil


konversi ke variabel yang bersesuaian dengan tipe hasil konversi
tersebut, misalnya variabel bertipe double digunakan untuk
menampung konversi dari method parseDouble(). Kita lihat
sebuah program berikut ini:

Program 2.14

1 class VariabelKonversi1
2 {
3 public static void main (String[] args)
4 {
5 String data = “7.45”;
6
7 double pecahan= Double.parseDouble(data);
8
9 System.out.println(“Isi variabel data : “
+ data);
10 System.out.println(“Isi variabel pecahan : “
+ pecahan);
11 }
12 }

- 43 -
Pengantar Bahasa Java

Variabel data menyimpan data string “7.45”, sedangkan variabel


pecahan menyimpan hasil konversi dari string tersebut dalam
format double.

Kebalikan dari konversi data string menjadi data numerik


ditunjukkan pada program berikut ini, dimana kita melakukan
konversi data numerik menjadi data string dengan output yang
sama dengan program sebelumnya.

Program 2.15

1 class VariabelKonversi2
2 {
3 public static void main (String[] args)
4 {
5 double pecahan = 7.45;
6
7 String data = Double.toString (pecahan);
8
9 System.out.println (“Isi variabel data : “
+ data);
10 System.out.println (“Isi variabel pecahan : “
+ pecahan);
11 }
12 }

- 44 -
Pengantar Bahasa Java

2.7 Manipulasi Data

Yang dimaksud dengan manipulasi data adalah proses mengubah isi


variabel dengan suatu nilai baru. Nilai baru ini mungkin berupa nilai
mutlak, mungkin juga berupa nilai yang diperoleh dari suatu proses
matematika.

Andaikan kita membuat deklarasi sebagai berikut:

double pecahan = 7.45;

Lalu di dalam tubuh program ada kode untuk mengubah nilai variabel
pecahan :

pecahan = pecahan + 3;

yang menyatakan bahwa isi variabel pecahan yang sekarang adalah


isi semula (7.45) ditambah dengan 3, maka sekarang variabel
pecahan menyimpan data 10.45. Bentuk penulisan seperti ini sangat
umum dilakukan pada berbagai bahasa pemrograman. Java
menyediakan cara lain untuk melakukan manipulasi data dengan cara
yang lebih singkat:

pecahan += 3;

Penulisan seperti ini memiliki arti yang sama dengan penulisan


sebelumnya, tetapi lebih singkat. Kita harus menuliskan “+=”
berdampingan tanpa spasi, sedangkan sebelum dan sesudahnya

- 45 -
Pengantar Bahasa Java

boleh ada spasi. Penulisan singkat seperti ini tidak hanya berlaku
pada penjumlahan, tetapi bisa diterapkan untuk pengurangan,
perkalian, pembagian dan sisa hasil bagi.

pecahan /= 3;

Bentuk penulisan ini menyatakan bahwa isi variabel pecahan


sekarang adalah isi sebelumnya dibagi dengan 3.

pecahan += angka * 3;

Bentuk penulisan ini identik dengan

pecahan = pecahan + (angka * 3);

Sekarang kita akan membuat sebuah program yang mengilustrasikan


penggunaan penulisan singkat matematika. Program ini akan
menghitung jumlah pecahan uang dari data yang kita berikan.
Misalnya kita memasukkan angka uang 13050, maka komputer akan
melaporkan bahwa uang tersebut terdiri dari :
• 1 buah pecahan 10.000,
• 1 buah pecahan 50.

Diasumsikan bahwa pecahan yang tersedia adalah 100.000, 50.000,


20.000, 10.000, 5.000, 1.000, 500, 100 dan 50.

- 46 -
Pengantar Bahasa Java

Program 2.16

1 import javax.swing.JOptionPane;
2
3 class PecahanUang
4 {
5 public static void main (String[] args)
6 {
7 int seratusRibu = 0;
8 int limapuluhRibu = 0;
9 int duapuluhRibu = 0;
10 int sepuluhRibu = 0;
11 int limaRibu = 0;
12 int seribu = 0;
13 int limaratus = 0;
14 int seratus = 0;
15 int limapuluh = 0;
16 int nilaiUang = 0;
17 int sisa = 0;
18 String input = "";
19 String hasil = "";
20
21 input = JOptionPane.showInputDialog
("Jumlah uang :");
22 nilaiUang = Integer.parseInt (input);
23
24 hasil += "Input = " + Integer.toString
(nilaiUang) + "\n";
25
26 seratusRibu = nilaiUang / 100000;
27 nilaiUang %= 100000;
28 hasil += "\nSeratus ribu = " +
Integer.toString (seratusRibu);
29
30 limapuluhRibu = nilaiUang / 50000;
31 nilaiUang %= 50000;
32 hasil += "\nLima puluh ribu = " +
Integer.toString (limapuluhRibu);
33
34 duapuluhRibu = nilaiUang / 20000;

- 47 -
Pengantar Bahasa Java

35 nilaiUang %= 20000;
36 hasil += "\nDua puluh ribu = " +
Integer.toString (duapuluhRibu);
37
38 sepuluhRibu = nilaiUang / 10000;
39 nilaiUang %= 10000;
40 hasil += "\nSepuluh ribu = " +
Integer.toString (sepuluhRibu);
41
42 limaRibu = nilaiUang / 5000;
43 nilaiUang %= 5000;
44 hasil += "\nLima ribu = " +
Integer.toString (limaRibu);
45
46 seribu = nilaiUang / 1000;
47 nilaiUang %= 1000;
48 hasil += "\nSeribu = " +
Integer.toString (seribu);
49
50 limaratus = nilaiUang / 500;
51 nilaiUang %= 500;
52 hasil += "\nLima ratus = " +
Integer.toString (limaratus);
53
54 seratus = nilaiUang / 100;
55 nilaiUang %= 100;
56 hasil += "\nSeratus = " +
Integer.toString (seratus);
57
58 limapuluh = nilaiUang / 50;
59 nilaiUang %= 50;
60 hasil += "\nLima puluh = " +
Integer.toString (limapuluh);
61
62 sisa = nilaiUang;
63 hasil += "\nSisa = " +
Integer.toString (sisa);
64
65 JOptionPane.showMessageDialog (null, hasil);
66 System.exit(0);
67 }
68 }

- 48 -
Pengantar Bahasa Java

Compile lalu jalankan program ini. Berikan sebuah data numerik yang
menyatakan nilai uang yang akan diproses, misalnya 13750.

Output program:

Silahkan anda menganalisa bagaimana proses menghitung


banyaknya pecahan uang untuk setiap item. Yang perlu mendapat

- 49 -
Pengantar Bahasa Java

perhatian adalah penulisan instruksi pada proses manipulasi data


yang bentuknya dipersingkat. Kita ambil contoh instruksi pada baris
26, 27 dan 28.


26 seratusRibu = nilaiUang / 100000;
27 nilaiUang %= 100000;
28 hasil += "\nSeratus ribu = " +
Integer.toString (seratusRibu);

Pada baris 26 kita mengubah isi variabel seratusRibu dengan hasil


perhitungan nilaiUang dibagi 100000. Cara ini sudah biasa kita
gunakan. Pada baris 27 kita memanipulasi isi variabel nilaiUang
dengan cara mengambil sisa bagi isinya semula dengan 100000. Cara
yang biasa kita gunakan adalah

nilaiUang = nilaiUang % 100000;

Penulisan seperti ini tentu memakan waktu lebih lama karena jumlah
karakter yang kita ketik lebih banyak. Terakhir, pada instruksi pada
baris 28 kita mengubah isi variabel string hasil dengan menambahkan
isinya semula dengan data string baru. Kalau kita menggunakan cara
lama, maka instruksi tersebut akan kita tuliskan

hasil = hasil + "\nSeratus ribu = " +


Integer.toString (seratusRibu);

yang tentu saja lebih panjang dan melelahkan. Bentuk khusus untuk
mempersingkat penulisan proses manipulasi data adalah auto-
increment dan auto-decrement yang hanya bekerja dengan bilangan

- 50 -
Pengantar Bahasa Java

satu. Auto-increment adalah proses menambahkan isi suatu variabel


dengan satu. Sebaliknya, auto-decrement adalah proses mengurangi
isi suatu variabel dengan satu. Perhatikan ilustrasi berikut ini:

pecahan++;

Bentuk ini menyatakan bahwa isi variabel pecahan ditambah dengan


satu. Cara penulisan seperti ini disebut post-increment. Kebalikan dari
post-increment adalah pre-increment, dimana kita meletakkan
operator “++” di depan nama variabel.

++pecahan;

Kedua proses ini –pre dan post increment— akan memberikan hasil
yang sama terhadap berubahnya isi variabel pecahan. Perbedaan
keduanya terdapat pada “kapan isi variabel ditambah dengan satu”.
Program berikut ini akan menunjukkan perbedaan antara pre-
increment dan post-increment.

Program 2.17

1 class AutoIncrement
2 {
3 public static void main (String[] args)
4 {
5 double pecahan_1 = 5;
6 double pecahan_2 = 5;
7 double penampung_1 = 0;
8 double penampung_2 = 0;
9
10 System.out.println(“Isi variable mula-mula”);

- 51 -
Pengantar Bahasa Java

11 System.out.println(“----------------------”);
12 System.out.println (“pecahan_1 = “ +
pecahan_1);
13 System.out.println (“pecahan_2 = “ +
pecahan_2);
14 System.out.println (“penampung_1 = “ +
penampung_1);
15 System.out.println (“penampung_2 = “ +
penampung_2);
16
17 penampung_1 = pecahan_1++;
18 penampung_2 = ++pecahan_2;
19
20 System.out.println();
21 System.out.println (“Isi variable sekarang”);
22 System.out.println (“---------------------”);
23 System.out.println (“pecahan_1 = “ +
pecahan_1);
24 System.out.println (“pecahan_2 = “ +
pecahan_2);
25 System.out.println (“penampung_1 = “ +
penampung_1);
26 System.out.println (“penampung_2 = “ +
penampung_2);
27 }
28 }

Output program:

- 52 -
Pengantar Bahasa Java

Mula-mula variabel pecahan_1 dan pecahan_2 diberi nilai awal 5, dan


variabel penampung_1 dan penampung _2 diberi nilai awal 0. Proses
selanjutnya adalah mengubah isi variabel penampung_1 dan
penampung _2. Proses ini terdapat pada instruksi baris 17 dan 18.

Instruksi pada baris 17 dibaca sebagai berikut:


• Salin isi variabel pecahan_1 ke variabel penampung_1.
• Tambahkan isi variabel pecahan_1 dengan satu.

Instruksi pada baris 18 dibaca sebagai berikut:


• Tambahkan isi variabel pecahan_2 dengan satu.
• Salin isi variabel pecahan_2 ke variabel penampung_2.

Pre-increment akan menambahkan isi variabel pecahan_2 terlebih


dahulu sebelum disalinkan ke variabel penampung_2, berbeda
dengan post-increment yang akan menyalinkan isi variabel
pecahan_1 ke variabel penampung_1 terlebih dahulu sebelum
akhirnya ditambahkan dengan satu. Pemahaman yang sama berlaku
juga untuk auto-decrement. Cobalah untuk melatih logika auto-
increment dan auto-decrement ini agar diperoleh pemahaman yang
baik.

2.8 Memformat Tampilan Angka

Bentuk tampilan angka kiranya perlu mendapat perhatian lebih.


Sejumlah angka yang ditampilkan secara tabuler harus mengikuti
kaidah angka satuan ditampilkan paling kanan, diikuti di sebelah
kirinya dengan angka puluhan, lalu ratusan, ribuan dan seterusnya.
Secara default Java akan menampilkan data numerik seperti apa
adanya. Kita buat sebuah program singkat berikut ini:

- 53 -
Pengantar Bahasa Java

Program 2.18

1 class FormatBilangan1
2 {
3 public static void main (String[] args)
4 {
5 System.out.println (1000);
6 System.out.println (100);
7 System.out.println (10);
8 System.out.println (1);
9 }
10 }

Kita akan menampilkan empat buah bilangan pada baris terpisah.


Program ini memberikan output sebagai berikut:

Bentuk output angka seperti ini tentu tidak tepat untuk


menggambarkan urutan angka, misalnya jika semua angka tersebut
akan dijumlahkan. Java menyediakan class NumberFormat untuk
mengatur format tampilan angka. Program berikut ini merupakan
modifikasi dari program di atas, dimana kita sudah menambahkan
fasilitas untuk memformat tampilan angka.

Program 2.19

1 import java.text.NumberFormat;

- 54 -
Pengantar Bahasa Java

2
3 class FormatBilangan2
4 {
5 public static void main (String[] args)
6 {
7 NumberFormat nf = NumberFormat.getInstance();
8
9 nf.setMinimumIntegerDigits (4);
10
11 System.out.println (nf.format (1000));
12 System.out.println (nf.format (100));
13 System.out.println (nf.format (10));
14 System.out.println (nf.format (1));
15 }
16 }

Output program:

Baris 9 menyatakan bahwa angka integer akan ditampilkan minimal


sejumlah 4 angka, sehingga angka yang bagian integernya kurang
dari 4 akan mendapat tambahan angka nol di depannya. Jika pemisah
ribuan tidak diinginkan, kita dapat memberikan perintah
nf.setGroupingUsed (false). Nilai default dari setGroupingUsed adalah
true dimana komputer akan menampilkan angka terformat dengan
pemisah ribuan.

- 55 -
Pengantar Bahasa Java

Program 2.20

1 import java.text.NumberFormat;
2
3 class FormatBilangan3
4 {
5 public static void main (String[] args)
6 {
7 NumberFormat nf = NumberFormat.getInstance();
8
9 nf.setMinimumIntegerDigits (4);
10
11 nf.setGroupingUsed (false);
12
13 System.out.println (nf.format (1000));
14 System.out.println (nf.format (100));
15 System.out.println (nf.format (10));
16 System.out.println (nf.format (1));
17 }
18 }

Output program:

Pengaturan format bilangan juga dapat dilakukan terhadap bilangan


pecahan, misalnya kita ingin menampilkan seluruh bilangan minimal 3
angka pecahan.

- 56 -
Pengantar Bahasa Java

Program 2.21

1 import java.text.NumberFormat;
2
3 class FormatBilanganPecahan1
4 {
5 public static void main (String[] args)
6 {
7 NumberFormat nf = NumberFormat.getInstance();
8
9 nf.setMinimumFractionDigits (3);
10
11 System.out.println (nf.format (100.52356));
12 System.out.println (nf.format (100.52326));
13 System.out.println (nf.format (100.523));
14 System.out.println (nf.format (100.5));
15 }
16 }

Baris 9 menyatakan bahwa kita menetapkan jumlah fraction atau


angka pecahan yang akan ditampilkan sebanyak 3 digit. Konsep yang
digunakan adalah pembulatan ke atas untuk angka pecahan 0.5 atau
lebih. Program ini akan memberikan output sebagai berikut:

Selain menggunakan method setMinimumFractionDigits() untuk


mengatur jumlah angka pecahan minimal, kita juga bisa
menggunakan method setMaximumFractionDigits() untuk mengatur
jumlah angka pecahan maksimal.

- 57 -
Pengantar Bahasa Java

Program 2.22

1 import java.text.NumberFormat;
2
3 class FormatBilanganPecahan2
4 {
5 public static void main (String[] args)
6 {
7 NumberFormat nf = NumberFormat.getInstance();
8
9 nf.setMinimumFractionDigits (3);
10
11 nf.setMaximumFractionDigits (5);
12
13 System.out.println (nf.format (100.52356));
14 System.out.println (nf.format (100.52326));
15 System.out.println (nf.format (100.523));
16 System.out.println (nf.format (100.5));
17 }
18 }

Instruksi pada baris 11 menunjukkan penggunaan method


setMaximumFractionDigits(). Kita ingin meampilkan angka pecahan
minimal 3 angka dan maksimal 5 angka di belakang koma desimal.
Program ini akan memberikan output sebagai berikut:

- 58 -
Pengantar Bahasa Java

2.9 Penggunaan Class JOptionPane

Sampai saat ini kita sudah membahas tentang bagaimana cara untuk
menerima dan menginformasikan data. Method readline() digunakan
untuk menerima inputan data melalui keyboard dan method print()
atau println() digunakan untuk menampilkan data ke layar. Kedua
cara input dan output ini akan bekerja pada layar mode teks, seperti
pada saat kita bekerja pada sistem operasi MS-DOS.

Cara lain untuk melakukan proses I/O adalah menggunakan class


JOptionPane. Class ini terdapat di package javax.swing, sehingga
setiap program yang menggunakan class JOptionPane harus
menuliskan javax.swing.JOptionPane. Class JOptionPane
menyediakan sarana I/O dengan bentuk tampilan yang lebih baik,
berbasis grafik. Model tampilan ini serupa dengan model tampilan
sistem operasi MS-Windows. Beberapa method yang akan kita
gunakan adalah:
1. Method showInputDialog(), digunakan untuk menerima inputan
data melalui keyboard.
2. Method showMessageDialog(), digunakan untuk menampilkan
suatu string ke layar.
3. Method showConfirmDialog(), digunakan untuk melakukan
konfirmasi dengan user tentang sesuatu hal, misalnya konfirmasi
apakah user akan mengulang suatu proses atau menutup
aplikasi.

Kita akan membahas ketiga method tersebut satu per satu.


1. Method showInputDialog()
Method showInputDialog() digunakan untuk menerima inputan
dari user melalui keyboard. Data yang dikembalikan oleh method
ini selalu dalam bentuk string, sehingga untuk memperoleh data
numerik perlu dilakukan proses konversi data. Program berikut ini
mengilustrasikan penggunaan method showInputDialog().

- 59 -
Pengantar Bahasa Java

Program 2.23

1 import javax.swing.JOptionPane;
2
3 class InputDialog1
4 {
5 public static void main (String[] args)
6 {
7 String nama;
8
9 nama = JOptionPane.showInputDialog
(“Ketik nama Anda :”);
10
11 System.out.println (“Hallo “ + nama);
12
13 System.exit(0);
14 }
15 }

Baris 9 menyebabkan komputer akan menunggu pengetikan data


oleh user. String “Ketik nama Anda :” merupakan teks pengantar
yang menunjukkan kepada user data apa yang harus diberikan.
Tanpa adanya teks pengantar ini user akan kesulitan menebak
data apa yang diharapkan oleh komputer. Instruksi pada baris 13
menyatakan proses berhenti dan kembali ke sistem. Instruksi ini
akan selalu kita gunakan kalau kita memanfaatkan class
JOptionPane sebagai sarana untuk proses I/O.

Compile dan jalankan program ini. Komputer akan meminta


inputan dari kita melalui suatu interface yang lebih baik daripada
sekedar layar console.

- 60 -
Pengantar Bahasa Java

Pada area yang disediakan kita mengetikkan sebuah nama,


misalnya “Indah”, lalu kita click button ‘OK’ atau menekan tombol
‘ENTER’. Komputer akan menangkap data yang kita berikan lalu
menampilkan hasilnya ke layar:

Kemungkinan lain yang bisa terjadi adalah kita membatalkan


pemberian data; dengan kata lain kita click button ‘Cancel’ atau
kita menekan tombol ‘ESCAPE’. Dalam kasus seperti ini komputer
akan menganggap kita memberikan data kosong atau null.

Ada beberapa variasi penggunaan method showInputDialog().


Silahkan anda mempelajarinya sendiri.

2. Method showMessageDialog()
Method showMessageDialog() digunakan untuk menampilkan
informasi ke layar. Perhatikan contoh program berikut dimana kita
mengkombinasikan penggunaan method showMessageDialog()
dengan method showInputDialog().

- 61 -
Pengantar Bahasa Java

Program 2.24

1 import javax.swing.JOptionPane;
2
3 class InputDialog2
4 {
5 public static void main (String[] args)
6 {
7 String nama;
8
9 nama = JOptionPane.showInputDialog
(“Ketik nama Anda :”);
10
11 JOptionPane.showMessageDialog (null,
“Hallo “ + nama);
12
13 System.exit(0);
14 }
15 }

Perhatikan kode pada baris 11. Argumen pertama dari method


showMessageDialog() adalah nama untuk parent component.
Untuk selanjutnya area ini akan kita isi dengan null. Argumen
kedua adalah string yang akan kita tampilkan. Method ini selalu
menampilkan data dalam format string.

Jalankan program ini lalu inputkan sebuah nama, misalnya


“Indah”. Output yang diberikan adalah sebagai berikut:

- 62 -
Pengantar Bahasa Java

Variasi lain dari method showMessageDialog() diperlihatkan


pada program berikut. Di sini kita menentukan judul form
message (defaultnya string “Message”), lalu kita menentukan jenis
pesan yang akan ditampilkan (default:
“INFORMATION_MESSAGE”).

Program 2.25

1 import javax.swing.JOptionPane;
2
3 class InputDialog3
4 {
5 public static void main (String[] args)
6 {
7 String nama;
8
9 nama = JOptionPane.showInputDialog
(“Ketik nama Anda :”);
10
11 JOptionPane.showMessageDialog (null,
“Hallo “ + nama,
“Informasi”,
JOptionPane.INFORMATION_MESSAGE);
12
13 System.exit(0);
14 }
15 }

Output program:

- 63 -
Pengantar Bahasa Java

Perbedaan output ini dengan sebelumnya adalah judul form


message yang sudah kita ganti dengan string “Informasi”. Ada
beberapa jenis message yang bisa kita berikan:
• INFORMATION_MESSAGE
• ERROR_MESSAGE
• WARNING_MESSAGE
• QUESTION_MESSAGE
• PLAIN_MESSAGE

Jenis-jenis message ini digunakan tergantung maksud dan


keperluan kita menampilkan suatu message. Jika message yang
akan kita tampilkan dimaksudkan sebagai informasi pesan
kesalahan suatu proses, kita dapat memberikan nilai
ERROR_MESSAGE. Efek langsung yang tampak di layar adalah
gambar icon yang ditampilkan pada form message akan berubah
mengikuti jenis message yang diberikan. Misalnya kita membuat
sebuah aplikasi yang akan menyimpan data ke floppy disk, lalu
pada saat itu disk drive dalam keadaan terbuka, maka komputer
akan memberikan informasi bahwa data tidak bisa disimpan
karena disk drive belum ditutup.

Silahkan anda berkreasi dengan jenis message yang lain dan lihat
efek yang muncul di layar. Gunakan jenis-jenis message ini
secara tepat agar tidak membingungkan user.

3. Method showConfirmDialog()
Method showConfirmDialog() digunakan untuk melakukan
konfirmasi dengan user tentang suatu proses, misalnya apakah

- 64 -
Pengantar Bahasa Java

user akan mengulang input data atau tidak. Langsung saja,


sekarang kita akan membuat sebuah program yang akan terus
melakukan input data selama user menghendaki hal itu.

Program 2.26

1 import javax.swing.JOptionPane;
2
3 class InputDialog4
4 {
5 public static void main (String[] args)
6 {
7 String nama;
8
9 do
10 {
11 nama = JOptionPane.showInputDialog
(“Ketik nama Anda :”);
12
13 JOptionPane.showMessageDialog
(null, “Hallo “ + nama);
14 }
15 while (JOptionPane.showConfirmDialog
(null, Ulangi lagi ?”) ==
JOptionPane.YES_OPTION);
16
17 System.exit(0);
18 }
19 }

Compile lalu jalankan program ini. Mula-mula komputer akan


menampilkan form untuk input data:

- 65 -
Pengantar Bahasa Java

Setelah kita click button ‘OK’ muncul proses akan dilanjutkan


dengan menampilkan sebuah form message:

Setelah kita click button ‘OK’ muncul form konfirmasi berikut:

Pada saat form konfirmasi muncul, kita dapat melakukan click


pada button ‘Yes’ jika ingin memberikan data baru, atau
melakukan click pada button ‘No’ atau ‘Cancel’ untuk mengakhiri
proses. Dalam contoh ini kita menggunakan kontrol program while
untuk mengulang suatu proses. Secara detail pembahasan
mengenai while akan dijelaskan pada bab berikutnya.

- 66 -
Pengantar Bahasa Java

Secara default form konfirmasi akan ditampilkan dengan tiga


button: ‘Yes’, ‘No’ dan ‘Cancel’. Java memberikan kebebasan
kepada kita untuk menggunakan beberapa button yang memang
kita perlukan. Yang tidak bisa kita lakukan adalah mengganti kata-
kata pada button dengan kata-kata lain, misalnya ‘Cancel’ diganti
dengan ‘Batal’. Dengan sangat terpaksa kita harus menggunakan
kata-kata default ini.

Untuk mengatur agar form hanya menampilkan button ‘Yes’ dan


‘No’ saja kita bisa menggunakan statement berikut ini:

JOptionPane.showConfirmDialog (null,
“Tulis kalimat di sini”,
“Judul form konfirmasi”,
JOptionPane.YES_NO_OPTION)

Nilai penekanan button:


• Penekanan button ‘Yes’ : JOptionPane.YES_OPTION
• Penekanan button ‘No’ : JOptionPane.NO_OPTION

Ilustrasi bentuk output dari statement ini adalah:

- 67 -
Pengantar Bahasa Java

2.10 Menangkap Kesalahan Proses

Seringkali kita tidak menyadari bahwa kode yang kita tulis bisa
menimbulkan kesalahan pada saat program berjalan (run-time),
misalnya kita membuat program yang meminta masukan berupa data
numerik. Jika user memberikan data karakter maka komputer akan
menghentikan program dengan sejumlah informasi kesalahan proses.
Kita belum mengantisipasi kesalahan ini sebelumnya. Sebuah
program yang baik harus bisa menangani kemungkinan terjadinya
kesalahan lalu bisa mengarahkan alur secara normal.

Istilah “menangkap kesalahan proses” merujuk kepada suatu


mekanisme untuk mencegah terjadinya kesalahan proses program
yang disebabkan oleh data yang diberikan tidak valid. Bahasa
komputernya : data yang diberikan tidak boleh berupa garbage alias
sampah. Kalau kita memberikan data yang salah, maka secanggih
apa pun komputer yang dimiliki tetap tidak ada gunanya. Data yang
akan diolah harus benar sesuai kebutuhan.

Java menyediakan mekanisme yang bagus untuk menangkap


kesalahan yang terjadi dalam suatu proses. Perhatikan program
berikut ini.

Program 2.27

1 import javax.swing.JOptionPane;
2
3 class PerangkapKesalahan
4 {
5 public static void main (String[] args)
6 {
7 String input;
8 int bilangan;

- 68 -
Pengantar Bahasa Java

9
10 input = JOptionPane.showInputDialog
(“Ketik sebuah bilangan :”);
11 bilangan = Integer.parseInt (input);
12
13 JOptionPane.showMessageDialog (null,
“Anda mengetikkan “ + bilangan);
14
15 System.exit(0);
16 }
17 }

Mula-mula program ini meminta inputan berupa angka.

Output program:

Jika kita salah memberikan data inputan, misalnya dengan


mengetikkan karakter,

- 69 -
Pengantar Bahasa Java

maka komputer akan menghentikan proses dengan memberikan


informasi tentang kesalahan yang terjadi:

dan selanjutnya program berhenti. Kejadian seperti ini sangat tidak


diharapkan. Seharusnya program kita bisa memberikan informasi
kepada user bahwa data yang diberikan salah, dan program masih
bisa berhenti secara normal.

Mekanisme untuk menangkap kesalahan ada di dalam blok try dan


catch. Perhatikan program berikut ini yang merupakan perbaikan dari
program sebelumnya.

Program 2.28

1 import javax.swing.JOptionPane;
2
3 class PerangkapKesalahan1
4 {
5 public static void main (String[] args)
6 {

- 70 -
Pengantar Bahasa Java

7 String nama = “”;


8 int bilangan = 0;
9
10 try
11 {
12 input = JOptionPane.showInputDialog
(“Ketik sebuah bilangan:”);
13
14 bilangan = Integer.parseInt (input);
15
16 JOptionPane.showMessageDialog(null,
“Anda mengetikkan “ + bilangan);
17 }
18 catch (Exception e)
19 {
20 JOptionPane.showMessageDialog (null,
“Anda salah memasukkan data !\n” +
input + “ bukan data angka.”);
21 }
22
23 System.exit(0);
24 }
25 }

Instruksi pada baris berapa pun yang terletak di dalam blok try yang
mengalami kesalahan, alur program akan dipindahkan ke dalam blok
catch. Sekarang jika kita memberikan inputan yang salah, “STIKOM”
misalnya, maka komputer akan memindahkan alur proses dan
mengerjakan instruksi yang ada di dalam blok catch.

- 71 -
Pengantar Bahasa Java

Class Exception pada baris 18 merupakan class yang merujuk


kepada jenis kesalahan secara umum. Statement catch (Exception e)
menyebabkan komputer akan menangkap kesalahan yang terjadi,
apa pun jenis kesalahan tersebut. Secara spesifik class Exception
bisa dijabarkan menjadi beberapa jenis kesalahan, antara lain :
• NumberFormatException, disebabkan oleh kesalahan pemasukan
data dengan tipe yang berbeda dengan tipe variabel penampung.
• ArrayIndexOutOfBoundsException, disebabkan karena kita
mencoba mengakses elemen array pada indeks di luar indeks
yang valid, seperti indeks negatif atau indeks 5 sementara
variabel array yang kita pakai hanya memiliki 3 elemen.

Variabel ‘e’, atau mungkin anda ingin memberi nama lain, merupakan
variabel objek digunakan untuk menampung kesalahan yang terjadi.
Kita bisa mencetak ini variabel ‘e’ ini dengan terlebih dulu
mengkonversi menjadi data string.

Program 2.29

1 import javax.swing.JOptionPane;
2
3 class PerangkapKesalahan2
4 {
5 public static void main (String[] args)
6 {
7 String nama = “”;
8 int bilangan = 0;
9
10 try
11 {
12 input = JOptionPane.showInputDialog
(“Ketik sebuah bilangan:”);
13
14 bilangan = Integer.parseInt (input);
15
16 JOptionPane.showMessageDialog (null,
“Anda mengetikkan “ + bilangan);

- 72 -
Pengantar Bahasa Java

17 }
18 catch (Exception e)
19 {
20 JOptionPane.showMessageDialog (null,
“Terjadi error : ” + e.toString());
21 }
22
23 System.exit(0);
24 }
25 }

Jika kita memberikan inputan yang salah, misalnya karakter, komputer


akan menampilkan pesan kesalahan:

java.lang.NumberFormatException merupakan jenis kesalahan yang


terjadi. Dengan instruksi catch (Exception e) kita bisa menangkap
berbagai jenis kesalahan yang terjadi. Sekarang karena kita sudah
tahu bahwa kesalahan memasukkan data numerik dengan data string
membangkitkan kesalahan java.lang.NumberFormatException maka
kita bisa langsung menangkap kesalahan ini dalam pernyataan catch.

catch (NumberFormatException e)

Kelemahan dari cara ini adalah program hanya akan bereaksi


terhadap kesalahan java.lang.NumberFormatException. Kesalahan
selain itu tidak akan “ditangkap” dan tetap menimbulkan efek

- 73 -
Pengantar Bahasa Java

“abnormal program termination” seolah-olah tidak ada perangkap


kesalahan.

Kesalahan yang terjadi dapat anda tampilkan dengan dua cara:


1. Mengkonversi error-message menjadi data string menggunakan
method toString().
2. Mengambil langsung error-message yang terjadi menggunakan
method getMessage().

Cara pertama : mengkonversi error-message menjadi data string


dapat dilakukan dengan cara berikut ini:

JOptionPane.showMessageDialog (null,
“Terjadi error : ” + e.toString());

Cara kedua : mengambil langsung error-message yang terjadi dapat


dilakukan dengan cara berikut ini:

JOptionPane.showMessageDialog (null,
“Terjadi error : ” + e.getMessage());

Java juga bisa menangkap beberapa kesalahan sekaligus. Untuk ini


kita bisa membuat blok try-catch secara nested, yaitu di dalam
sebuah blok try-catch terdapat blok try-catch yang lain. Program
berikut ini menunjukkan pemakaian nested try-catch tersebut.

Program 2.30

1 import java.io.*;
2

- 74 -
Pengantar Bahasa Java

3 class MultipleCatch1
4 {
5 public static void main (String[] args)
6 {
7 DataInputStream dis = new DataInputStream
(System.in);
8
9 try
10 {
11 try
12 {
13 try
14 {
15 System.out.print ("Angka pertama :
");
16 int x = Integer.parseInt
(dis.readLine());
17
18 System.out.print("Angka kedua : ");
19 int y = Integer.parseInt
(dis.readLine());
20
21 int z = x / y;
22 System.out.println ("z = " + z);
23 }
24 catch (NumberFormatException nfe)
25 {
26 System.out.println ("\nSalah “ +
“format angka");
27 }
28 }
29 catch (ArithmeticException ae)
30 {
31 System.out.println ("\nPembagian “ +
“dengan nol");
32 }
33 }
34 catch (IOException ioe)
35 {
36 System.out.println ("\nSalah proses I/O");
37 }
38 }

- 75 -
Pengantar Bahasa Java

39 }

Setiap blok try-catch dipersiapkan untuk menangkap kesalahan yang


mungkin terjadi. Jika salah satu dari baris program pada blok try
membangkitkan exception, mula-mula sistem akan memeriksa apakah
exception tersebut termasuk jenis NumberFormatException, yaitu
kesalahan pada saat memasukkan data numerik. Jika exception yang
terjadi bukan dari jenis ini, sistem akan memeriksa jenis exception itu
lebih lanjut : apakah termasuk jenis ArithmeticException, yaitu terjadi
pembagian dengan bilangan nol. Jika bukan maka sistem akan
memeriksa apakah exception yang terjadi termasuk ke dalam jenis
IOException. Apapun jenis exception yang terjadi komputer akan
menampilkan pesan yang sesuai pada setiap blok catch. Mari kita
jalankan program ini.

Pada saat komputer meminta inputan angka pertama kita


memasukkan data bukan numerik, maka komputer akan menampilkan
pesan “Salah format angka”. Pesan ini dibangkitkan oleh
NumberFormatException. Pesan yang sama juga akan ditampilkan jika
kita memasukkan data bukan numerik pada pertanyaan kedua, jika
data pertama kita berikan secara benar.

Jika kedua data itu benar, tetapi data kedua kita beri bilangan nol,
maka komputer akan menampilkan pesan kesalahan
ArithmeticException, seperti diperlihatkan berikut ini:

- 76 -
Pengantar Bahasa Java

Jika seluruh data inputan diberikan secara benar komputer akan


menghitung hasil bagi kedua bilangan tersebut dengan mengambil
bilangan bulatnya saja.

Cara lain untuk menghandle beberapa blok try-catch seperti ini adalah
dengan membuat sebuah blok try yang diikuti oleh beberapa blok
catch. Program berikut ini merupakan modifikasi darii program di atas
dengan menerapkan multiple-catch-block, dimana sebuah blok try
diikuti oleh beberapa blok catch. Hasilnya sama dengan program di
atas.

Program 2.31

1 import java.io.*;
2
3 class MultipleCatch2
4 {
5 public static void main (String[] args)
6 {
7 DataInputStream dis = new DataInputStream
(System.in);
8
9 try
10 {
11 System.out.print ("Angka pertama : ");

- 77 -
Pengantar Bahasa Java

12 int x = Integer.parseInt (dis.readLine());


13
14 System.out.print ("Angka kedua : ");
15 int y = Integer.parseInt (dis.readLine());
16
17 int z = x / y;
18 System.out.println ("z = " + z);
19 }
20 catch (NumberFormatException nfe)
21 {
22 System.out.println ("\nSalah “ +
“format angka");
23 }
24 catch (ArithmeticException ae)
25 {
26 System.out.println ("\nPembagian “ +
“dengan nol");
27 }
28 catch (IOException ioe)
29 {
30 System.out.println ("\nSalah proses I/O");
31 }
32 }
33 }

2.11 Konstanta

Variabel yang memiliki data atau nilai yang bersifat tetap disebut
konstanta. Nilai yang disimpan di dalam variabel ini tidak bisa diubah
selama program berjalan. Satu-satunya cara mengubah data pada
konstanta adalah dengan memodifikasi kode program, dan ini hanya
bisa dilakukan oleh mereka yang mengerti pemrograman. Konstanta
dibutuhkan untuk menentukan suatu tetapan yang bersifat universal,
misalnya nilai phi pada formula matematis.

- 78 -
Pengantar Bahasa Java

Sebuah konstanta dideklarasikan dengan menggunakan kata kunci


final, yang menyatakan bahwa data yang tersimpan pada variabel ini
sudah tidak bisa diubah-ubah lagi. Contoh deklarasi konstanta adalah:

final int angka = 11;

Variabel angka adalah variabel dengan nilai yang bersifat tetap;


dengan kata lain angka adalah sebuah konstanta. Selama program
berjalan, nilai yang disimpan di variabel angka, dalam hal ini 11, tidak
bisa diubah. Jika kita mencoba mengubah nilai tersebut dalam salah
satu baris program, compiler Java akan memberikan pesan
kesalahan. Perhatikan program berikut ini.

Program 2.32

1 class TestError
2 {
3 public static void main (String[] args)
4 {
5 final int angka = 11;
6
7 angka = 3;
8
9 System.out.println (“Angka = “ + angka);
10 }
11 }

Pada baris 7 kita mencoba mengubah nilai yang tersimpan pada


variabel konstan angka. Compiler Java akan memberikan pesan
kesalahan sebagai berikut:

- 79 -
Pengantar Bahasa Java

2.12 Komentar di dalam Program

Tidak selamanya kita bisa dengan mudah memahami alur program,


apalagi jika program tersebut sangat kompleks dan dalam
pembuatannya melibatkan sebuah team. Ada bagian-bagian tertentu
dari program yang perlu mendapat penjelasan, misalnya mengenai
fungsi bagian itu, keterkaitannya dengan bagian lain dan sebagainya.
Satu hal yang paling penting dari pembuatan program adalah adanya
dokumentasi tentang program tersebut, misalnya tanggal pembuatan,
nama team yang membuatnya dan lain-lain data yang diperlukan.

Sebuah komentar tidak akan diproses oleh compiler Java. Komentar


tetap menjadi bagian dari kode program pada file .java, tetapi tidak
menjadi bagian dari file .class. Keberadaan komentar akan membantu
pemahaman program yang dibuat dengan lebih baik. Untuk
membedakan antara komentar dengan kode biasa, penulisan
komentar di dalam buku ini dibuat agak redup dengan menggunakan
warna yang berbeda dibandingkan dengan kode biasa.

Tersedia dua cara untuk menyisipkan komentar di dalam program:


1. Menggunakan pasangan karakter double-slash “//”. Pasangan
karakter ini menyatakan bahwa seluruh karakter dalam satu baris
yang terletak di belakangnya akan dianggap sebagai komentar.
2. Menggunakan pasangan karakter “/*” dan “*/”. Seluruh tulisan
yang diapit oleh pasangan karakter ini akan dianggap sebagai
komentar. Seluruh karakter yang berada setelah pasangan
karakter “/*” akan dianggap sebagai komentar selama belum
ditemukan karakter “*/”.

- 80 -
Pengantar Bahasa Java

Program 2.33

1 class Komentar
2 {
3 public static void main (String[] args)
4 {
5 // System.out.println (“String ini tidak “ +
6 // “akan ditampilkan”);
6
7 /*
8 System.out.println (“String ini juga“);
9 System.out.println (“tidak akan “ +
“ditampilkan”);
10 */
11
12 System.out.println (“String ini akan “ +
“ditampilkan”);
13 }
14 }

Instruksi pada baris 5 sampai dengan baris 10 tidak akan diproses


oleh compiler Java. Satu-satunya instruksi yang akan diproses adalah
instruksi pada baris 12.

- 81 -
Pengantar Bahasa Java

Halaman ini sengaja dikosongkan

- 82 -

You might also like