Follow Now......!

Java Programming

Membagikan dan membuat contoh-contoh study kasus yang sering digunakan dalam bahasa pemograman Java, kita bisa saling sharing all about Java Programming.

Sunday, September 2, 2012

Membuat Kalkulator Sederhana di Java

Alhamdulillah sesuatu akhirnya bisa postingan lagi, selama bermeditasi digunung batu akhirnya dapet flashbang (pencerahan) juga hehehe. Postingan kali ini kita masih akan membahas seputar Java Programming, kalo kemarin kan kita membahas tentang Menentukan Jumlah Bilangan Bulat dan Pecahan, nahh sekarang juga masih tentang bilangan cuman ada ngitung-ngtungnya aja, yuppss benerr kita akan membuat program tentang kalkulator, tapi sebelumnya sebenernya program yang akan saya bahas ini belum sempurna atau masih versi 1.0 nya lah hahaha, program kali ini masih sangaaaattt simpel, sebenernya tugasnya ga gini sih cuman proses nya itu looohh hahaha, cuman yaa di buat simpel aja dulu karna keterbatasan ilmu hehehe, next time kalo udah beres meditasi di gunung batu lgi terus dapet flashbang, kita update versi 1.0 nya hehehe.
Ok..

Ohh I'm curious yeeaahh..
Sesuai dengan judul, tuhh bisa diliat diatas apa judulnya hehehe. Sederhana, oke namanya juga sederhana jadi program yang saya buat ini cuman bisa + sama - aja, seharusnya tugasnya itu ada * sama / cuman ya itu ilmunya belum kesampaian hehehe maap yaaa nanti diupdate kalo udah dapet ilmunya :)
Namun program ini ada keistimewaan tersendiri, tapi kalo dibandingin sama program yang udah pake GUI jelas kalah laahh itu ngebandinginnya terlalu jauh hehehe, disini kita bisa langsung input bilangan disertai dengan operatornya, berbeda dengan tutorial yang pernah saya temui yang memasukan operatornya dengan dipilih berdasarkan keterangan, itu benar ! tohh hasilnya juga bener ga salah, selagi 1+1= masih 2 kenapa disalahkan?? hehehe, untuk lebih jelasnya ini algoritmanya :
contoh :
Input
5 + 2 - 3

Output
4
Yang perlu diperhatikan, inputan disekaliguskan tanpa enter, pertanyaannya ko bisa ? kan klo belum dienter si bilangan nya ga bakanlan ke input dong ? itu kenapa ada operatornya lgi ? berarti itu String dong ? mungkin dari anda akan bertanya demikian, untuk lebih jelas nya chek this out !!
Seperti biasa saya akan memberikan script keseluruhannya terlebih dahulu sebelum dijelaskan, dimohon untuk dipahami terlebih dahulu sekaligus dicoba.

Calculator.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * @date 1 September 2012
 * @author ABRZLAZHR
 */
public class Calculator {
    //menggunakan class library BufferedReader
    BufferedReader dataIn = new BufferedReader(new InputStreamReader(System.in));       //instansiasi
    String input = "";              //deklarasi input
         
    //method prosedur input
    public void input() throws IOException{        
        System.out.println("Kalkulator sederhana + dan -");
        input = dataIn.readLine();              //membaca data input
    }
         
    //method prosedur OpBil
    public void OpBil(){         
        //split berguna untuk memecah string(dipisah berdasarkan spasi), kemudian disimpan dalam array
        String all[] = input.split(" ");                //Pendeklarasian_    
        String bilangan[] = new String[3];              //_data bilangan dimasukan ke dalam array 3 element
        String operator[] = new String[2];              //_data operator dimasukan ke dalam array 2 element
        int index_op = 0;                                 //
        int index_bil = 0;                                //
        
        //looping untuk membaca input yang sudah displit
        for(int i=0; i<all.length; i++){  
            //penyeleksian untuk membuat variabel berdasarkan operator dan bilangan
            if (("+".equals(all[i])) || ("-".equals(all[i]))){                    
                operator[index_op] = all[i];          //jika all[i] +/- maka var operator[index] akan diinisialisasi
                index_op++;                           //nilai index ditambahkan
            }               
            else{                    
                bilangan[index_bil] = all[i];        //jika all[i] bilangan maka var bilangan[index] akan diinisialisasi           
                index_bil++;                         //nilai index ditambahkan
            }           
        }
        //pass by reference, memberi nilai dan mengambil nilai
        hasil(bilangan, operator);           
    }
        
    //method fungsi dengan parameter bil dan opp
    public static String[] hasil(String[] bil, String[] opp){
        //variabel d_bilangan utk menyimpan bilangan yg sudah di convert
        double d_bilangan[] = new double[3];        
        double hasil = 0;
                
        //mengconvert masing2 bilangan dari string ke double menggunakan looping
        for(int i=0; i<bil.length; i++){
            d_bilangan[i] = Double.parseDouble(bil[i]);
        }           
        
        //nilai hasil di awali dengan nilai bilangan index 0
        hasil = d_bilangan[0];      
        /*karena nilai hasil awal sudah diawali oleh nilai bilangan index 0_
            maka index_hasil nilainya diawali dengan 1 bukan lagi 0*/
        int index_hasil = 1;
        for(int i=0; i<opp.length; i++){
            switch (opp[i]) {
                case "+":
                    hasil = hasil + d_bilangan[index_hasil];
                    break;
                case "-":
                    hasil = hasil - d_bilangan[index_hasil];
                    break;
            }
            index_hasil++;
        }
        System.out.println(hasil);
        return bil;
    }
}
dan ini mainClass nya

CalculatorTest.java
import java.io.IOException;
/**
 * @date 1 September 2012
 * @author ABRZLAZHR
 */
public class CalculatorTest {
    public static void main(String[] args) throws IOException {
        Calculator test = new Calculator();
        test.input();
        test.OpBil();
    }
}
Nahh kalo udah di coba kurang lebih printscreen nya seperti ini


Oke dilanjutkan dengan pembahasan scriptnya tapi ga bakalan semuanya dibahas, hanya sub-sub tertentu saja yg akan dibahas. Pertama kita buka dulu script Calculator.java

String all[] = input.split(" ")
Split disini berguna untuk memecah string berdasarkan spasi kemudian dimasukan kedalam index,
misalkan :
"saya belajar java"
maka
index 0 = "saya"
index 1 = "belajar"
index 2 = "java"
String bilangan[] = new String[3];
String operator[] = new String[2];
Pendeklarasian, kebetulan karena input di program seperti ini : "5 + 2 - 3",
variabel bilangan hanya membatasi 3 penyimpanan saja yaitu 5, 2, dan 3 tidak bisa lebih karena String[3] sudah dibatasi,
begitu juga dengan variabel operator hanya membatasi 2 penyimpanan saja yaitu + dan - tidak bisa lebih karena sudah dibatasi String[2].

for(int i=0; i<all.length; i++){  
    if (("+".equals(all[i])) || ("-".equals(all[i]))){                    
        operator[index_op] = all[i];
        index_op++; 
    }               
    else{                    
        bilangan[index_bil] = all[i]; 
        index_bil++;   
    }           
}
Pebagian inisialisasi berdasarkan all[index] hasil dari split().
misalkan(mengambil contoh sebelumnya) :
all[0] = "saya"
all[1] = "belajar"
Lalu disana ada penyeleksian dan masuk ke aksi berikutnya (misal) maksud dari operator[index_op] = all[i] adalah
operator[0] = all[0]
Jadi inisialisasi dari variabel operator[0] = "saya" diloopingkan menghasilkan  variabel  operator[1] = "belajar" dan seterusnya.

double d_bilangan[] = new double[3];  
Mengapa harus membuat variabel untuk bilangan lagi?
Varibel ini dikhususkan untuk bilangan yang sudah di convert dari string ke double.

for(int i=0; i<bil.length; i++){
    d_bilangan[i] = Double.parseDouble(bil[i]);
}   
Masing-masing bilangan[index] di convert dari String ke double agar dapat diproses berikutnya.

hasil = d_bilangan[0];      
int index_hasil = 1;
Mengapa index_hasil dimulai dari 1 ?
Karena nilai hasil awal sudah diawali oleh nilai bilangan index 0 (hasil = d_bilangan[0]) maka index_hasil nilainya diawali dengan 1 bukan lagi 0.

Untuk download bisa disini :
Kalkulator.class
Kalkulator.jar

Selanjutnya script CalculatorTest.java, namun scipt ini tidak usah dijelaskan karena di CalculatorTest.java ini hanya terdapat pemanggilan method saja dan juga sudah dijelaskan dipost sebelumnya untuk pemanggilan method dapat dilihat di Menentukan Jumlah Bilangan Bulat dan Pecahan.

Oke sekian pembahasan kali ini mohon maaf jika ada pembahasaan yang kurang dipahami, namun saya percaya bahwa anda bisa paham sendiri tanpa dijelaskan juga, pahami alur dari coding seperti apa, lalu hasil dari coding itu juga seperti apa. Insyaallah jika usaha anda baik hasilnya pun akan baik pula :)

Selamat bertemu dipostingan berikutnya~ :)

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More