Minggu, 13 Desember 2015

KALKULATOR SEDERHANA

Kalkulator adalah alat untuk menghitung dari perhitungan sederhana seperti penjumlahan, pengurangan, perkalian dan pembagian sampai kepada kalkulator sains yang dapat menghitung rumus matematika tertentu. Pada perkembangannya sekarang ini, kalkulator sering dimasukkan sebagai fungsi tambahan daripada komputer, handphone, bahkan sampai jam tangan.
Namun kalkulator tidak hanya terpasang dalam PC, handphone, ataupun jam tangan. Namun memang ada alat yang bernama kalkulator yang berguna untuk mempermudah perhitungan. Selain itu, ternyata kalkulator juga dapat dibuat melalui program, dengan aplikasi java-eclipse dan yang pastinya menggunakan aplikasi GUI.
Caranya seperti biasa, seperti halnya mengcoding dalam eclipse, bahkan dalam pembuatan kalkulator sederhana ini hanya membutuhkan satu class saja, langsung saja, ini source codenya
 import java.awt.*;
 import javax.swing.*;
 import java.awt.event.*;

 public class Calculator extends JFrame implements ActionListener {
    
     JPanel[] row = new JPanel[5];
     JButton[] button = new JButton[19];
     String[] buttonString = {"7", "8", "9", "+",
                              "4", "5", "6", "-",
                              "1", "2", "3", "*",
                              ".", "/", "C", "√",
                              "+/-", "=", "0"};
     int[] dimW = {300,45,100,90};
     int[] dimH = {35, 40};
     Dimension displayDimension = new Dimension(dimW[0], dimH[0]);
     Dimension regularDimension = new Dimension(dimW[1], dimH[1]);
     Dimension rColumnDimension = new Dimension(dimW[2], dimH[1]);
     Dimension zeroButDimension = new Dimension(dimW[3], dimH[1]);
     boolean[] function = new boolean[4];
     double[] temporary = {0, 0};
     JTextArea display = new JTextArea(1,20);
     Font font = new Font("Times new Roman", Font.BOLD, 14);
    
     Calculator() {
         super("Calculator");
         setDesign();
         setSize(380, 250);
         setResizable(false);
         setDefaultCloseOperation(EXIT_ON_CLOSE);
         GridLayout grid = new GridLayout(5,5);
         setLayout(grid);
        
         for(int i = 0; i < 4; i++)
             function[i] = false;
        
         FlowLayout f1 = new FlowLayout(FlowLayout.CENTER);
         FlowLayout f2 = new FlowLayout(FlowLayout.CENTER,1,1);
         for(int i = 0; i < 5; i++)
             row[i] = new JPanel();
             row[0].setLayout(f1);
         
         for(int i = 1; i < 5; i++)
             row[i].setLayout(f2);
        
         for(int i = 0; i < 19; i++) {
             button[i] = new JButton();
             button[i].setText(buttonString[i]);
             button[i].setFont(font);
             button[i].addActionListener(this);
         }  
          display.setFont(font);
          display.setEditable(false);
          display.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
          display.setPreferredSize(displayDimension);
       
         for(int i = 0; i < 14; i++)
             button[i].setPreferredSize(regularDimension);
       
         for(int i = 14; i < 18; i++)
             button[i].setPreferredSize(rColumnDimension);
             button[18].setPreferredSize(zeroButDimension);
        
             row[0].add(display);
             add(row[0]);
        
         for(int i = 0; i < 4; i++)
             row[1].add(button[i]);
             row[1].add(button[14]);
          add(row[1]);
        
         for(int i = 4; i < 8; i++)
             row[2].add(button[i]);
             row[2].add(button[15]);
             add(row[2]);
        
         for(int i = 8; i < 12; i++)
             row[3].add(button[i]);
             row[3].add(button[16]);
             add(row[3]);
        
          row[4].add(button[18]);
         for(int i = 12; i < 14; i++)
             row[4].add(button[i]);
             row[4].add(button[17]);
             add(row[4]);
        
         setVisible(true);
     }
    
     public void clear() {
         try {
             display.setText("");
             for(int i = 0; i < 4; i++)
                 function[i] = false;
             for(int i = 0; i < 2; i++)
                 temporary[i] = 0;
         } catch(NullPointerException e) {
         }
     }
    
     public void getSqrt() {
         try {
             double value = Math.sqrt(Double.parseDouble(display.getText()));
             display.setText(Double.toString(value));
         } catch(NumberFormatException e) {
         }
     }
    
     public void getPosNeg() {
         try {
             double value = Double.parseDouble(display.getText());
             if(value != 0) {
                 value = value * (-1);
                 display.setText(Double.toString(value));
             }
             else {
             }
         } catch(NumberFormatException e) {
         }
     }
    
     public void getResult() {
         double result = 0;
         temporary[1] = Double.parseDouble(display.getText());
         String temp0 = Double.toString(temporary[0]);
         String temp1 = Double.toString(temporary[1]);
         try {
             if(temp0.contains("-")) {
                 String[] temp00 = temp0.split("-", 2);
                 temporary[0] = (Double.parseDouble(temp00[1]) * -1);
             }
             if(temp1.contains("-")) {
                 String[] temp11 = temp1.split("-", 2);
                 temporary[1] = (Double.parseDouble(temp11[1]) * -1);
             }
         } catch(ArrayIndexOutOfBoundsException e) {
         }
         try {
             if(function[2] == true)
                 result = temporary[0] * temporary[1];
             else if(function[3] == true)
                 result = temporary[0] / temporary[1];
             else if(function[0] == true)
                 result = temporary[0] + temporary[1];
             else if(function[1] == true)
                 result = temporary[0] - temporary[1];
                display.setText(Double.toString(result));
             for(int i = 0; i < 4; i++)
                 function[i] = false;
         } catch(NumberFormatException e) {
         }
     }

     public final void setDesign() {
         try {
             UIManager.setLookAndFeel(
                     "com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
         } catch(Exception e) {
         }
     }
    
     @Override
     public void actionPerformed(ActionEvent ae) {
         if(ae.getSource() == button[0])
             display.append("7");
         if(ae.getSource() == button[1])
             display.append("8");
         if(ae.getSource() == button[2])
             display.append("9");
         if(ae.getSource() == button[3]) {
             //add function[0]
             temporary[0] = Double.parseDouble(display.getText());
             function[0] = true;
             display.setText("");
         }
         if(ae.getSource() == button[4])
             display.append("4");
         if(ae.getSource() == button[5])
             display.append("5");
         if(ae.getSource() == button[6])
             display.append("6");
         if(ae.getSource() == button[7]) {
             //subtract function[1]
             temporary[0] = Double.parseDouble(display.getText());
             function[1] = true;
             display.setText("");
         }
       
         if(ae.getSource() == button[8])
             display.append("1");
         if(ae.getSource() == button[9])
             display.append("2");
         if(ae.getSource() == button[10])
             display.append("3");
         if(ae.getSource() == button[11]) {
             //multiply function[2]
             temporary[0] = Double.parseDouble(display.getText());
             function[2] = true;
             display.setText("");
         }
         if(ae.getSource() == button[12])
             display.append(".");
         if(ae.getSource() == button[13]) {
             //divide function[3]
             temporary[0] = Double.parseDouble(display.getText());
             function[3] = true;
             display.setText("");
         }

         if(ae.getSource() == button[14])
             clear();
         if(ae.getSource() == button[15])
          getSqrt();
         if(ae.getSource() == button[16])
             getPosNeg();
         if(ae.getSource() == button[17])
             getResult();
         if(ae.getSource() == button[18])
             display.append("0");
     }
    
     public static void main(String[] arguments) {
         Calculator c = new Calculator();
     }
 }

Berikut hasil programnya