Simple calculator Java Dalam belajar java , mahasiswa sering saya beri tugas untuk membuat aplikasi kalkulator sederhana. Untuk membuatnya, mereka harus memahamai alur kerja atau algoritma kalkulator. Yang saya harapkan tentu mereka bisa membuat dengan algoritma sendiri. Tujuannya adalah agar kemampuan algoritma mereka semakin terasah dan memotivasi agar terus latihan belajar bahasa pemrograman.

Diinternet banyak sekali contoh aplikasi kalkulator dengan java, misalnya di planet source code. Tinggal ketik keyword “calculator”, kemudian find, maka akan muncul beberapa contoh aplikasi kalkulator. Satu sama lain menggunakan algoritma yang berbeda, walaupun tujuannya sama. Pengalaman saya beberapa kali membuat kalkulator sederhana, setelah jadi dan saya perhatikan algoritmanyapun memang berbeda dengan algoritma sebelumnya(tentunya saat membuat tanpa melihat algoritma sebelumnya), walaupun menghasilkan output yang sama. Karena memang algoritma seperti seni, penuh dengan kreasi sesuai dengan mood orang yang membuatnya.

Berikut adalah contoh kalkulator sederhana dengan java. Pada kalkulator sederhana ini saya sengaja pisahkan antara class model(proses) dan calss view(tampilan).Tujuannya agar bisa menambah pemahaman konsep Object oriented. Seluruh proses seperti pertambahan, pengurangan, perkalian, dan pembagian diletakan pada class model. Pada class view dibuat object dari class model untuk menjalankan fungsi kalkulator.
Tools yang dibutuhkan adalah:
Java JDK, saya menggunakan JDK versi 1.6
Netbeans, saya menggunakan netbeans 6.9

Berikut adalah class model kalkulator.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
public class CalculatorModel {
    int operator=0;
    double operand1=0;
    double operand2=0;
    double result=0;
 
    public void setOperand(String opr) {
        if(!opr.equals("")){
            if(operator==0){
                operand1=Double.valueOf(opr);
            }else{
                operand2=Double.valueOf(opr);
            }
        }
    }
 
    public void setOperator(int operator) {
        this.operator = operator;
    }
 
    public double getResult() {
        return result;
    }
 
    public void setResult(double hasil) {
        this.result = hasil;
    }
 
    public void process(){
        switch (operator){
            case 1:
                result = operand1 + operand2;
                break;
            case 2:
                result = operand1 - operand2;
                break;
            case 3:
                result = operand1 * operand2;
                break;
            case 4:
                result = operand1 / operand2;
                break;
            case 5:
                result = operand1 % operand2;
                break;
            case 6:
                result = 1/operand1;
                break;
            default: result = operand1;
        }
        operand1=result;
    }
 
    public void setOperand1(double operand1) {
        this.operand1 = operand1;
    }
 
    public void setOperand2(double operand2) {
        this.operand2 = operand2;
    }
 
    public void clear(){
        setOperand1(0);
        setOperand2(0);
        setResult(0);
        setOperator(0);
    }
 
}

dan berikut adalah class view kalkulator. Disini hanya saya tampilkan source yang saya buat. Source yang digenerate oleh netbeans tidak saya cantumkan.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package view;
 
import java.text.DecimalFormat;
import javax.swing.JOptionPane;
import model.CalculatorModel;
 
public class CalculatorView extends javax.swing.JFrame {
 
    /** Creates new form CalculatorView */
    public CalculatorView() {
        initComponents();
    }
    CalculatorModel model = new CalculatorModel();
    String operand="";
 
    public void getOperand(javax.swing.JButton button){
        operand+=button.getText();
        resultLabel.setText(operand);
    }
 
    private void getOperator(int opt){
        model.setOperand(operand);
        model.setOperator(opt);
        if(opt == 1 || opt == 2){
            model.process();
            resultLabel.setText(model.getResult()+"");
        }else{
            resultLabel.setText(operand);
        }
        operand = "";
    }
    private void process(){
        DecimalFormat df = new DecimalFormat("#,###.########");
        model.setOperand(operand);
        model.process();
        operand = "";
        resultLabel.setText(df.format(model.getResult())+"");
    }
 
    private void button1ActionPerformed(java.awt.event.ActionEvent evt) {
        getOperand(button1);
    }                                       
 
    private void button2ActionPerformed(java.awt.event.ActionEvent evt) {
        getOperand(button2);
    }                                       
 
    private void button3ActionPerformed(java.awt.event.ActionEvent evt) {
        getOperand(button3);
    }                                       
 
    private void button4ActionPerformed(java.awt.event.ActionEvent evt) {
        getOperand(button4);
    }                                       
 
    private void button5ActionPerformed(java.awt.event.ActionEvent evt) {
        getOperand(button5);
    }                                       
 
    private void button6ActionPerformed(java.awt.event.ActionEvent evt) {
        getOperand(button6);
    }                                       
 
    private void button7ActionPerformed(java.awt.event.ActionEvent evt) {
        getOperand(button7);
    }                                       
 
    private void button8ActionPerformed(java.awt.event.ActionEvent evt) {
        getOperand(button8);
    }                                       
 
    private void button9ActionPerformed(java.awt.event.ActionEvent evt) {
        getOperand(button9);
    }                                       
 
    private void buttonTambahActionPerformed(java.awt.event.ActionEvent evt) {
        getOperator(1);
    }                                            
 
    private void buttonKurangActionPerformed(java.awt.event.ActionEvent evt) {
       getOperator(2);
    }                                            
 
    private void buttonKaliActionPerformed(java.awt.event.ActionEvent evt) {
        getOperator(3);
    }                                          
 
    private void buttonBagiActionPerformed(java.awt.event.ActionEvent evt) {
        getOperator(4);
    }                                          
 
    private void buttonModulusActionPerformed(java.awt.event.ActionEvent evt) {
        getOperator(5);
    }                                             
 
    private void buttonSeperActionPerformed(java.awt.event.ActionEvent evt) {
        getOperator(6);
    }                                           
 
    private void buttonSamaDenganActionPerformed(java.awt.event.ActionEvent evt) {
        process();
    }                                                
 
    private void button11ActionPerformed(java.awt.event.ActionEvent evt) {
        getOperand(button11);
    }                                        
 
    private void buttonKomaActionPerformed(java.awt.event.ActionEvent evt) {
        getOperand(buttonKoma);
    }                                          
 
    private void button12ActionPerformed(java.awt.event.ActionEvent evt) {
        if(operand.length()>1){
            operand = operand.substring(0, operand.length()-1);
            model.setOperand(operand);
            resultLabel.setText(operand);
        }else{
            operand = "";
            model.setOperand(operand);
            resultLabel.setText("0");
        }
    }                                        
 
    private void buttonACActionPerformed(java.awt.event.ActionEvent evt) {
        operand = "";
        model.clear();
        resultLabel.setText("0");
    }                                        
 
    private void menuExitActionPerformed(java.awt.event.ActionEvent evt) {
        if(JOptionPane.showConfirmDialog(rootPane, "Are you sure you will exit this application?","Exit Application",1)==0){
            System.exit(0);
        }
    }                                        
 
    private void aboutMenuActionPerformed(java.awt.event.ActionEvent evt) {
        JOptionPane.showMessageDialog(rootPane, "This is a simple example of a calculator that uses the concept of MVC."
                + "View and process are placed in separate classes."
                + "Made by Muhamad Nur");
    } 
 
}

Dan untuk menjalankannya jangan lupa buat class main

1
2
3
4
5
6
7
8
9
import view.CalculatorView;
 
public class Main {
 
    public static void main(String[] args) {
        new CalculatorView().setVisible(true);
    }
 
}

Untuk kode lengkapnya silahkan download disini.