Cari artikel di situs ini

Contoh Program switch case

Versi ramah cetakVersi ramah cetak

Kita akan membuat program untuk main suit. Permainan ini terdiri dari dua pemain. Dalam permainan real, biasanya dua pemain mengadu suit dengan saling menunjukkan jari. Hanya 3 jari yang boleh dipakai: jempol, telunjuk, dan kelingking.

Peraturannya : Jempol menang lawan Telunjuk, Telunjuk menang lawan Kelingking, dan Kelingking menang lawan Jempol.

Dalam program ini, komputer adalah pemain pertama, sedangkan user adalah pemain kedua. Komputer akan menggunakan perintah random() untuk menghitung salah satu dari 3 pilihan. 0 berarti Jempol, 1 berarti Telunjuk, dan 2 berarti Kelingking.

User akan diberikan pertanyaan untuk memasukkan J untuk Jempol, T untuk Telunjuk dan K untuk Kelingking. Kemudian dengan pernyataan switch, J, T, dan K akan diubah menjadi angka 0, 1, dan 2 seperti pada komputer.

Hasil perhitungan komputer dan hasil input dari user akan dibandingkan, kemudian hasilnya siapa yang menang akan ditampilkan di layar.

package mainsuit;
 
import java.io.*;
 
public class MainSuit {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
        // cetak aturan main dan input dari user
        System.out.println("Permainan suit");
        System.out.println("==============");
        System.out.println("Masukkan salah satu dari 3 kemungkinan :");
        System.out.println("J untuk Jempol");
        System.out.println("T untuk Telunjuk");
        System.out.println("K untuk Kelingking");
        System.out.println(""); // baris kosong
 
        // variabel untuk mengambil input dari user
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = null;
 
        // Kita gunakan pernyataan while hingga user betul
        // memasukkan salah satu dari J, T, atau K
        boolean inputvalid = false;
 
        int suitKomputer = 0;
        int suitUser = 0;
 
        // selama input tidak valid, jalankan perulangan ini
        while (!inputvalid) {
            System.out.print("Masukkan suit Anda ");
            try {
                input = br.readLine();
            } catch (IOException ioe) {
                System.out.println("Kesalahan IO, program berhenti");
                System.exit(1);
            }
 
            // pastikan bahwa user memasukkan sesuatu dengan mengecek
            // apakah panjang input > 0
            // jika tidak, maka perulangan akan dilanjutkan
            if (input.length() > 0) {
                switch (input.charAt(0)) {
                    case 'j' :
                    case 'J' :
                        suitUser = 0;
                        inputvalid = true;  // kita ganti inputvalid agar perulangan selesai
                        break;
                    case 't' :
                    case 'T' :
                        suitUser = 1;
                        inputvalid = true;  // kita ganti inputvalid agar perulangan selesai
                        break;
                    case 'k' :
                    case 'K' :
                        suitUser = 2;
                        inputvalid = true;  // kita ganti inputvalid agar perulangan selesai
                        break;
                }
            }
        }
 
        // sekarang menghitung suit komputer
        // Math.random() menghasilkan nilai acak antara 0 dan 1
        // jika kita kali 3, berarti menghasilkan nilai acak antara 0 dan 3
        // perintah (int) untuk mengubah bilangan real menjadi bilangan bulat
        // dengan cara menghilangkan semua digit di belakang koma
        // misalnya 1.0232323 menjadi 1
        suitKomputer = (int)(Math.random()*3);
 
        // suatu saat "mungkin" nilai random bernilai 3
        // karena 3 tidak ada dalam suit kita, maka kita harus ubah menjadi
        // salah satu suit yang valid, yaitu 0, 1, atau 2
        // dalam hal ini kita ganti jadi 2
        if (suitKomputer == 3) {
            suitKomputer = 2;
        }
 
        // menghitung siapa yang menang
        switch (suitKomputer) {
            // jika komputer Jempol
            case 0:
                // cetak suit Komputer
                System.out.println("Suit komputer = Jempol");
                switch (suitUser) {
                    // jika user Jempol
                    case 0:
                        System.out.println("Seri");
                        break;
                    // jika user Telunjuk
                    case 1:
                        System.out.println("Anda kalah");
                        break;
                    // jika user Kelingking
                    case 2:
                        System.out.println("Anda menang");
                        break;
                }
                break; // dari switch(suitKomputer)
            // jika komputer Telunjuk
            case 1:
                // cetak suit Komputer
                System.out.println("Suit komputer = Telunjuk");
                switch (suitUser) {
                    // jika user Jempol
                    case 0:
                        System.out.println("Anda menang");
                        break;
                    // jika user Telunjuk
                    case 1:
                        System.out.println("Seri");
                        break;
                    // jika user Kelingking
                    case 2:
                        System.out.println("Anda kalah");
                        break;
                }
                break; // dari switch(suitKomputer)
            // jika komputer Kelingking
            case 2:
                // cetak suit Komputer
                System.out.println("Suit komputer = Kelingking");
                switch (suitUser) {
                    // jika user Jempol
                    case 0:
                        System.out.println("Anda kalah");
                        break;
                    // jika user Telunjuk
                    case 1:
                        System.out.println("Anda menang");
                        break;
                    // jika user Kelingking
                    case 2:
                        System.out.println("Seri");
                        break;
                }
                break; // dari switch(suitKomputer)
        }
    }
}

Berikut ini adalah contoh keluaran program

Listing program di atas dapat Anda unduh melalui zip file atau pada gudang SVN di alamat http://belajarjava.googlecode.com/svn/trunk/MainSuit

SisipanUkuran
MainSuit-src.zip1.95 KB

Komentar

Tanya

Begini mas....

jika program sudah berjalan hingga selesai.. nah bagaimana codenya untuk menanyakan kepada user untuk bermain lg...

ini kan program diatas,

Permainan suit
==============
Masukkan salah satu dari 3 kemungkinan :
J untuk Jempol
T untuk Telunjuk
K untuk Kelingking

Masukkan suit Anda t
Suit komputer = Telunjuk
Seri

setelah menemukan seri, kalah, dan menang,,,,

kita tanyakan ke user "apakah ingin bermain lg"...

tentunyakan balik ke perintah-perintah diatas....

code nya mas.....

heheheeeee...

belum nemu-nemu...

Thanks....

 

cara menanyakan kepada user apa ingin main lagi

Caranya adalah dengan melakukan pengulangan sebelum program dijalankan, dan memberikan notifikasi untuk bermain lagi atau keluar di akhir code. Berikut code yang sudah gw edit untuk menanyakan apa user ingin main lagi. Catatan: nama package dan nama class ubah sesuai nama package dan class tempat kamu copy paste code ini

package terserah;
 
import java.io.*;
 
public class terserah {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        boolean ulang = false;
        while(!ulang){
        // cetak aturan main dan input dari user
        System.out.println("Permainan suit");
        System.out.println("==============");
        System.out.println("Masukkan salah satu dari 3 kemungkinan :");
        System.out.println("J untuk Jempol");
        System.out.println("T untuk Telunjuk");
        System.out.println("K untuk Kelingking");
        System.out.println(""); // baris kosong
 
        // variabel untuk mengambil input dari user
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = null;
 
        // Kita gunakan pernyataan while hingga user betul
        // memasukkan salah satu dari J, T, atau K
        boolean inputvalid = false;
 
        int suitKomputer = 0;
        int suitUser = 0;
 
        // selama input tidak valid, jalankan perulangan ini
        while (!inputvalid) {
            System.out.print("Masukkan suit Anda ");
            try {
                input = br.readLine();
            } catch (IOException ioe) {
                System.out.println("Kesalahan IO, program berhenti");
                System.exit(1);
            }
 
            // pastikan bahwa user memasukkan sesuatu dengan mengecek
            // apakah panjang input > 0
            // jika tidak, maka perulangan akan dilanjutkan
            if (input.length() == 1) {
                switch (input.charAt(0)) {
                    case 'j' :
                    case 'J' :
                        suitUser = 0;
                        inputvalid = true;  // kita ganti inputvalid agar perulangan selesai
                        break;
                    case 't' :
                    case 'T' :
                        suitUser = 1;
                        inputvalid = true;  // kita ganti inputvalid agar perulangan selesai
                        break;
                    case 'k' :
                    case 'K' :
                        suitUser = 2;
                        inputvalid = true;  // kita ganti inputvalid agar perulangan selesai
                        break;
                }
            }
        }
 
        // sekarang menghitung suit komputer
        // Math.random() menghasilkan nilai acak antara 0 dan 1
        // jika kita kali 3, berarti menghasilkan nilai acak antara 0 dan 3
        // perintah (int) untuk mengubah bilangan real menjadi bilangan bulat
        // dengan cara menghilangkan semua digit di belakang koma
        // misalnya 1.0232323 menjadi 1
        suitKomputer = (int)(Math.random()*3);
 
        // suatu saat "mungkin" nilai random bernilai 3
        // karena 3 tidak ada dalam suit kita, maka kita harus ubah menjadi
        // salah satu suit yang valid, yaitu 0, 1, atau 2
        // dalam hal ini kita ganti jadi 2
        if (suitKomputer == 3) {
            suitKomputer = 2;
        }
 
        // menghitung siapa yang menang
        switch (suitKomputer) {
            // jika komputer Jempol
            case 0:
                // cetak suit Komputer
                System.out.println("Suit komputer = Jempol");
                switch (suitUser) {
                    // jika user Jempol
                    case 0:
                        System.out.println("Seri");
                        break;
                    // jika user Telunjuk
                    case 1:
                        System.out.println("Anda kalah");
                        break;
                    // jika user Kelingking
                    case 2:
                        System.out.println("Anda menang");
                        break;
                }
                break; // dari switch(suitKomputer)
            // jika komputer Telunjuk
            case 1:
                // cetak suit Komputer
                System.out.println("Suit komputer = Telunjuk");
                switch (suitUser) {
                    // jika user Jempol
                    case 0:
                        System.out.println("Anda menang");
                        break;
                    // jika user Telunjuk
                    case 1:
                        System.out.println("Seri");
                        break;
                    // jika user Kelingking
                    case 2:
                        System.out.println("Anda kalah");
                        break;
                }
                break; // dari switch(suitKomputer)
            // jika komputer Kelingking
            case 2:
                // cetak suit Komputer
                System.out.println("Suit komputer = Kelingking");
                switch (suitUser) {
                    // jika user Jempol
                    case 0:
                        System.out.println("Anda kalah");
                        break;
                    // jika user Telunjuk
                    case 1:
                        System.out.println("Anda menang");
                        break;
                    // jika user Kelingking
                    case 2:
                        System.out.println("Seri");
                        break;
                }
                break; // dari switch(suitKomputer)
        }
            //inisialisasi String mainlagi untuk mengecek apakah user ingin main lagi atau tidak
            String mainlagi = null;
            //inisialisasi boolean karakterinput untuk mengulang menanyakan kepada user apakah ingin main lagi
            boolean karakterinput = false;
            //ketika karakter input user bukan Y, y, N, atau n, maka while akan terus diulang
            while(!karakterinput){
                System.out.println("Apakah ingin bermain lagi?\nTekan Y untuk bermain lagi atau N untuk keluar");
                //membaca input user yang dimasukkan ke String mainlagi
                try {
                    mainlagi = br.readLine();
                } catch (IOException ioe) {
                    System.out.println("Kesalahan IO, program berhenti");
                    System.exit(1);
                }
                //verifikasi String mainlagi agar hanya y, Y, n, atau N saja, selain itu perulangan while akan dilakukan lagi
                if (mainlagi.length() == 1) {
                    switch (mainlagi.charAt(0)) {
                    case 'y' :
                    case 'Y' :
                        karakterinput = true;  // untuk keluar dari perulangan while jika karakter y atau Y dimasukkan
                        ulang = false; // untuk mengulang lagi permainan
                        break;
                    case 'n' :
                    case 'N' :
                        karakterinput = true;  // untuk keluar dari perulangan while jika karakter n atau N dimasukkan
                        ulang = true; // untuk keluar dari permainan
                        break;
                    }
                }
            }   
        }
    }
}

tanya:boolean

pak, mau nanya.. soalnya udah saya pikirin sendiri tetep ga nemu jawabnya, malah binun cendili... :(

saya bingung di variable boolean "inputvalid".

nilai awal "inputvalid=false",

kemudian di dalam while ==> while(!inputvalid)==> disini kan inputvalid jadi "true",, berarti perulangan terjadi selama kondisi "true". tapi kenapa untuk berhenti nilai inputvalid jadi "true' juga????? mohon pencerahannya.....terimakasih byk atas bantuannya yg sangat bermanfaat.

 

boolean inputvalid = false; int suitKomputer = 0; int suitUser = 0;

.....................

....................

// selama input tidak valid, jalankan perulangan

i while (!inputvalid) {

...................

.....................

if (input.length() > 0)

{ switch (input.charAt(0))

{

case 'j' :

case 'J' :

suitUser = 0;

inputvalid = true; // kita ganti inputvalid agar perulangan selesai break;

Logika "!inputvalid"

pak, mau nanya.. soalnya udah saya pikirin sendiri tetep ga nemu jawabnya, malah binun cendili... :(

saya bingung di variable boolean "inputvalid".

nilai awal "inputvalid=false",

kemudian di dalam while ==> while(!inputvalid)==> disini kan inputvalid jadi "true",,
sampai sini sudah benar logika kamu

berarti perulangan terjadi selama kondisi "true". tapi kenapa untuk berhenti nilai inputvalid jadi "true' juga????? mohon pencerahannya.....terimakasih byk atas bantuannya yg sangat bermanfaat.
nah di perulangan while kan kondisinya adalah "!inputvalid", coba dilihat ada tanda serunya
jadi kalau "inputvalid" bernilai "true", maka "!inputvalid" akan bernilai "false"

Jika kondisi bernilai false maka perulangan tidak akan dilakukan
Semoga bisa dimengerti :D

Terima Kasih

while(!inputvalid)         /* maksdunnya adalah perulangan akan terus berlanjut sampai dia bernilai true. jadi jika dia bernilai true maka perulangan berhenti. jadi bacanya bukan kyak gini, "perulangan akan terjadi saat bernilai true" tetapi seperti ini "perulangan akan terjadi saat sampai bernilai true"*/