Rabu, 17 Juli 2013

Program Kalkulator pada Java

Hari ini saya akan memberi tambahan informasi buat pembelajaran program java mengenai pembuatan " Kalkulator ". Mohon diperhatikan baik - baik script di bawah ini :


import java.awt.Color;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;


public class KALKULATOR12622028  extends JFrame
    implements ActionListener{
    // Deklarasi Variabel GUI
JTextField tampil_angka = new JTextField("0");
JPanel panalAngka = new JPanel();
JButton tombol_1 = new JButton("1");
JButton tombol_2 = new JButton("2");
JButton tombol_3 = new JButton("3");
JButton tombol_4 = new JButton("4");
JButton tombol_5 = new JButton("5");
JButton tombol_6 = new JButton("6");
JButton tombol_7 = new JButton("7");
JButton tombol_8 = new JButton("8");
JButton tombol_9 = new JButton("9");
JButton tombol_0 = new JButton("0");
JButton tombol_plusMinus = new JButton("+/-");
JButton tombol_Titik = new JButton(".");
JButton tombol_c = new JButton("C");
JButton tombol_kali = new JButton("*");
JButton tombol_kurang = new JButton("-");
JButton tombol_tambah = new JButton("+");
JButton tombol_bagi = new JButton("/");
JButton tombol_pangkat = new JButton("^");
JButton tombol_samaDengan = new JButton("=");
JButton tombol_ce = new JButton("CE");

// Deklarasi variabel input bukan angka
String bukan_angka = "";
// Deklarasi variabel tampung tampilan angka pertama
double bil_1 = 0;
// Deklarasi variabel angka baru jika mendapat input bukan angka
boolean angka_baru = false;
    public static void main(String[] args) {
     KALKULATOR12622028 frame = new KALKULATOR12622028();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(310, 255);
frame.setVisible(true);
frame.setResizable(false);
    }

    public KALKULATOR12622028() {
// Tampilan dan Judul
this.getContentPane().setLayout(null);
this.setTitle("Kalkulator ashtho software easy");

// Mengatur Panel
panalAngka.setBackground(Color.red);
panalAngka.setBounds(new Rectangle(0, 0, 343, 225));
panalAngka.setLayout(null);

// Menambahkan Tombol-Tombol pada Panel
panalAngka.add(tombol_0, null);
panalAngka.add(tombol_1, null);
panalAngka.add(tombol_2, null);
panalAngka.add(tombol_3, null);
panalAngka.add(tombol_4, null);
panalAngka.add(tombol_5, null);
panalAngka.add(tombol_6, null);
panalAngka.add(tombol_7, null);
panalAngka.add(tombol_8, null);
panalAngka.add(tombol_9, null);
panalAngka.add(tombol_c, null);
panalAngka.add(tombol_kali, null);
panalAngka.add(tombol_kurang, null);
panalAngka.add(tombol_samaDengan, null);
panalAngka.add(tombol_tambah, null);
panalAngka.add(tombol_bagi, null);
panalAngka.add(tombol_pangkat, null);
panalAngka.add(tombol_ce, null);
panalAngka.add(tombol_plusMinus, null);
panalAngka.add(tombol_Titik, null);

// Menambah dan mengatur JTextField untuk menampilkan angka-angka
panalAngka.add(tampil_angka, null);
this.getContentPane().add(panalAngka, null);
tampil_angka.setBackground(Color.white);
tampil_angka.setBorder(null);
tampil_angka.setEditable(false);
tampil_angka.setText("0");
tampil_angka.setHorizontalAlignment(SwingConstants.RIGHT);
tampil_angka.setBounds(new Rectangle(7, 10, 290, 27));

/** Mengatur ukuran dan posisi Tombol-Tombol
*
* Baris d = 7 8 9 C CE
* Baris c = 4 5 6 * ^
* Baris b = 1 2 3 - /
* Baris a = 0 +/- . + =
*
*/
// Baris a (0, +/-, ., +, =)
tombol_0.setBounds(new Rectangle(6, 183, 50, 33));
tombol_plusMinus.setBounds(new Rectangle(66, 183, 50, 33));
tombol_Titik.setBounds(new Rectangle(126, 183, 50, 33));
tombol_tambah.setBounds(new Rectangle(186, 183, 50, 33));
tombol_samaDengan.setBounds(new Rectangle(246, 183, 50, 33));
// Baris b (1, 2, 3, -, /)
tombol_1.setBounds(new Rectangle(7, 140, 50, 33));
tombol_2.setBounds(new Rectangle(66, 140, 50, 33));
tombol_3.setBounds(new Rectangle(126, 140, 50, 33));
tombol_kurang.setBounds(new Rectangle(186, 140, 50, 33));
tombol_bagi.setBounds(new Rectangle(246, 140, 50, 33));
// Baris c (4, 5, 6, *, %)
tombol_4.setBounds(new Rectangle(7, 97, 50, 33));
tombol_5.setBounds(new Rectangle(66, 97, 50, 33));
tombol_6.setBounds(new Rectangle(126, 97, 50, 33));
tombol_kali.setBounds(new Rectangle(186, 97, 50, 33));
tombol_pangkat.setBounds(new Rectangle(246, 97, 50, 33));

// Baris d (7, 8, 9, C, CE)
tombol_7.setBounds(new Rectangle(6, 54, 50, 33));
tombol_8.setBounds(new Rectangle(66, 54, 50, 33));
tombol_9.setBounds(new Rectangle(126, 54, 50, 33));
tombol_c.setBounds(new Rectangle(186, 54, 50, 33));
tombol_ce.setBounds(new Rectangle(246, 54, 50, 33));

// Menambahkan ActionListener pada Tombol-Tombol
tombol_0.addActionListener(this);
tombol_1.addActionListener(this);
tombol_2.addActionListener(this);
tombol_3.addActionListener(this);
tombol_4.addActionListener(this);
tombol_5.addActionListener(this);
tombol_6.addActionListener(this);
tombol_7.addActionListener(this);
tombol_8.addActionListener(this);
tombol_9.addActionListener(this);
tombol_plusMinus.addActionListener(this);
tombol_Titik.addActionListener(this);
tombol_c.addActionListener(this);
tombol_ce.addActionListener(this);
tombol_kali.addActionListener(this);
tombol_kurang.addActionListener(this);
tombol_pangkat.addActionListener(this);
tombol_bagi.addActionListener(this);
tombol_samaDengan.addActionListener(this);
tombol_tambah.addActionListener(this);
} // Akhir methode Kalkulator

/**
* Methode actionPerformed(ActionEvent e)
* Methode untuk memproses event yang diterima dari Tombol
* @param e :
*/
    @Override
    public void actionPerformed(ActionEvent e) {
       // Mengambil nama Command dari setiap tombol
// Mengambil nama Command dari setiap tombol
String a = e.getActionCommand();

// Jika tombol operator yang ditekan
if ( (a == "=") || (a == "-") || (a == "+") || (a == "*") || (a == "/")) {
// Panggil methode operasi dengan input a
operasi(a);
}

// Tetapi jika tombol titik yang ditekan
else if (a == ".") {
// Panggil Methode koma dengan input a
koma(a);
}

// Tetapi jika tombol pangkat atau “+/-“ yang ditekan
else if (a == "^" || a == "+/-") {
// Panggil methode pangkat dengan input a
pangkat (a);
}

// Tetapi jika tombol C atau CE yang ditekan
else if (a == "C" || a == "CE") {
// Panggil methode hapus dengan input a
hapus(a);
}

// Tetapi jika tombol angka yang ditekan
else {
// Panggil methode angka dengan input a
angka(a);
}
} // Akhir methode kalkulator

/**
* Methode : angka
* Keterangan : proses jika input yang didapat adalah Angka
* @param a :
*/
public void angka(String a) {
// Jika angka ditekan setelah tombol operator
if (angka_baru) {
tampil_angka.setText(a);
angka_baru = false;
}
else {
// Jika tombol angka pertama kali ditekan
if (tampil_angka.getText().equals("0")) {
// Hilangkan "0" dan diisi dengan angka yang ditekan
tampil_angka.setText(a);
}
// Tetapi jika bukan yang pertama kali ditekan
else {
// Tambahkan String angka tersebut
a = tampil_angka.getText() + a;
// Isi dengan string yang telah didapat
tampil_angka.setText(a);
}
}
} // Akhir methode angka

/**
* Methode : operasi
* Keterangan : proses jika input yang didapat adalah
* "+" "-" "*" "/" atau "="
* @param a :
*/
public void operasi(String a) {
// Mengambil nilai yang ada pada teks field
String ambil_angka = tampil_angka.getText();
// Jika tombol yang ditekan bukan tombol operator
if (angka_baru && bukan_angka != "=") {
}
// Tetapi jika tombol yang ditekan adalah tombol operator
else {
// Angka yang ditekan akan menjadi angka baru berikutnya
angka_baru = true;
// Jika Penjumlahan
if (bukan_angka == "+") {
bil_1 += Double.parseDouble(ambil_angka);
bukan_angka = a;
}
// Tetapi jika perkalian
else if (bukan_angka == "*") {
bil_1 *= Double.parseDouble(ambil_angka);
bukan_angka = a;
}
// Tetapi jika Pembagian
else if (bukan_angka == "/") {
bil_1 /= Double.parseDouble(ambil_angka);
bukan_angka = a;
}
// Tetapi jika pengurangan
else if (bukan_angka == "-") {
bil_1 -= Double.parseDouble(ambil_angka);
bukan_angka = a;
}
// Tetapi jika tombol "="
else {
bil_1 = Double.parseDouble(ambil_angka);
bukan_angka = a;
}
}
// Merubah hasil dari Double menjadi String
String koma_nol = Double.toString(bil_1);
// Apabila hasil yang didapatkan bilangan bulat
if (koma_nol.endsWith(".0")) {
// Hilangkan dua digit paling akhir (.0)
koma_nol = koma_nol.substring(0, koma_nol.trim().length() - 2);
}
// Tampilkan hasil akhir
tampil_angka.setText(koma_nol);
} // Akhir methode operasi

/**
* Methode : koma
* Keterangan : proses jika input yang didapat adalah
* "."
* @param a :
*/
public void koma(String a) {
String titik = tampil_angka.getText();
if (angka_baru) {
tampil_angka.setText("0.");
angka_baru = false;
}
else {
if (titik.indexOf(".") == -1) {
titik = titik + ".";
}
}
tampil_angka.setText(titik);
} // Akhir methode koma

/**
* Methode : pangkat
* Keterangan : proses jika input yang didapat adalah
* "^" atau "+/-"
* @param a :
*/
public void pangkat (String a) {
// Jika tombol "^" yang ditekan
 //double (jari,2)
if ("^".equals(a)) {
bil_1 = (Double.parseDouble(tampil_angka.getText()))*bil_1;
}

// Jika tombol "+/-" yang ditekan
else {
bil_1 =(Double.parseDouble(tampil_angka.getText())) * -1;
}

// Merubah hasil dari Double menjadi String
String koma_nol = Double.toString(bil_1);
// Apabila hasil yang didapatkan bilangan bulat
if (koma_nol.endsWith(".0")) {
// Hilangkan dua digit paling akhir (.0)
koma_nol = koma_nol.substring(0, koma_nol.trim().length() - 2);
}
// Tampilkan hasil akhir
tampil_angka.setText(koma_nol);
} // Akhir methode pangkat

/**
* Methode : hapus
* Keterangan : proses jika input yang didapat adalah
* "C" atau "CE"
* @param a :
*/
public void hapus(String a) {
if (a == "C") {
tampil_angka.setText("0");
bukan_angka = "";
bil_1 = 0;
angka_baru = true;
}
else {
tampil_angka.setText("0");
angka_baru = true;
}
}  
}



Semoga script di atas bermanfaat. Terus belajar jangan mudah menyerah.

Terima kasih . . .

Tidak ada komentar:

Poskan Komentar