Minggu, 30 Maret 2014

Kalkulator Sederhana

Welcome Back Gals... Setelah sebelumnya kita coba menyapa Android, next lanjut ke project selanjutnya, kali ini kita akan mencoba membuat “Simple Calculator” jangan tanya kenapa? Karenaaa..jawabannya sudah pasti !“ini tuntutan skenario sob” . Project yang akan kita buat ini nantinya dapat melakukan perhitungan penambahan, pengurangan, perkalian, pembagian, pemangkatan dan akar kuadrat dari 2 buah bilangan





Seperti biasanya untuk untuk memulai kita buat dulu project di workspace, untuk project kali ini saya menggunakan SimpleCalculate

Untuk Selanjutnya kita akan memulai dari main.xml, masuk package explorer diman project kita berada, masuk ke res/layout/activity_main.xml
Disini kita menggunakan LinearLayout sebagai dasar Layoutnya, setelah buka activity_main.xml tambahankan Source Code berikut :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    tools:ignore="HardcodedText,MangledCRLF,ExtraText,DisableBaselineAlignment,NestedWeights,Deprecated" >

    <EditText
        android:id="@+id/input"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:editable="false"
        android:inputType="number"
        android:numeric="integer"
        android:text="" >

        <requestFocus />
    </EditText>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    />


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >
  >


            <Button
                android:id="@+id/satu"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="1" >
            </Button>

            <Button
                android:id="@+id/empat"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="4" >
            </Button>

            <Button
                android:id="@+id/tujuh"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="7" >
            </Button>

            <Button
                android:id="@+id/koma"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="." >
            </Button>
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <Button
                android:id="@+id/dua"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="2" >
            </Button>

            <Button
                android:id="@+id/lima"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="5" >
            </Button>

            <Button
                android:id="@+id/delapan"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="8" >
            </Button>

            <Button
                android:id="@+id/nol"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="0" >
            </Button>
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <Button
                android:id="@+id/tiga"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="3" >
            </Button>

            <Button
                android:id="@+id/enam"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="6" >
            </Button>

            <Button
                android:id="@+id/sembilan"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="9" >
            </Button>

            <Button
                android:id="@+id/samadengan"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="=" >
            </Button>
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >



            <Button
                android:id="@+id/tambah"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="+" >
            </Button>

            <Button
                android:id="@+id/kurang"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="-" >
            </Button>

            <Button
                android:id="@+id/kali"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="*" >
            </Button>

            <Button
                android:id="@+id/bagi"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="/" >
            </Button>
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical" >

            <Button
                android:id="@+id/clear"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="CE" >
            </Button>

            <Button
                android:id="@+id/pangkat"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="x^x" >
            </Button>

            <Button
                android:id="@+id/akar"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="√" >
            </Button>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>
Untuk penjelasan mengenai Layout dan teman-temannya tidak saya bahas di sini karena akan saya buatkan materi tentang Layout tersendiri..
Selanjutnya ,.. eeeiiittsss wait a second . Sebelumnya siapkan mental anda dahulu untuk lanjut ke step ini karna menurut saya step ini butuh kosentrasi yang cukup, sebagai tambahan cemilan dan minuman juga jangan sampai lupa

Oke sekarang kita mulai coding pada MainActivity.java yang berada di src/ MainActivity.java
Tambahkan SourceCode berikut:
package com.example.simplecalculate;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.view.Menu;

public class MainActivity extends Activity implements OnClickListener {

       Button satu,dua,tiga,empat,lima,enam,tujuh,delapan,sembilan,
       nol,tambah,kali,kurang,bagi,samadengan,akar,clear,koma,pangkat;
      
       EditText input;
      
       double nilai1, nilai2;
       int operator;
       @Override
       protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
             
              input = (EditText)findViewById(R.id.input);
              satu = (Button)findViewById(R.id.satu);
              dua = (Button)findViewById(R.id.dua);
              tiga = (Button)findViewById(R.id.tiga);
              empat = (Button)findViewById(R.id.empat);
              lima = (Button)findViewById(R.id.lima);
              enam = (Button)findViewById(R.id.enam);
              tujuh = (Button)findViewById(R.id.tujuh);
              delapan = (Button)findViewById(R.id.delapan);
              sembilan = (Button)findViewById(R.id.sembilan);
              nol = (Button)findViewById(R.id.nol);
              tambah = (Button)findViewById(R.id.tambah);
              kali = (Button)findViewById(R.id.kali);
              kurang = (Button)findViewById(R.id.kurang);
              bagi = (Button)findViewById(R.id.bagi);
              samadengan = (Button)findViewById(R.id.samadengan);
              koma = (Button)findViewById(R.id.koma);
              clear = (Button)findViewById(R.id.clear);
              pangkat = (Button)findViewById(R.id.pangkat);
              akar = (Button)findViewById(R.id.akar);
             

              satu.setOnClickListener(this);
              dua.setOnClickListener(this);
              tiga.setOnClickListener(this);
              empat.setOnClickListener(this);
              lima.setOnClickListener(this);
              enam.setOnClickListener(this);
              tujuh.setOnClickListener(this);
              delapan.setOnClickListener(this);
              sembilan.setOnClickListener(this);
              nol.setOnClickListener(this);
              tambah.setOnClickListener(this);
              kali.setOnClickListener(this);
              kurang.setOnClickListener(this);
              bagi.setOnClickListener(this);
              samadengan.setOnClickListener(this);
              koma.setOnClickListener(this);
              clear.setOnClickListener(this);
              pangkat.setOnClickListener(this);
              akar.setOnClickListener(this);
       }

       @Override
       public boolean onCreateOptionsMenu(Menu menu) {
              // Inflate the menu; this adds items to the action bar if it is present.
              getMenuInflater().inflate(R.menu.main, menu);
              return true;
       }

       private void handleNomor(String nomor) {
              // TODO Auto-generated method stub

              String txt = input.getText().toString();
              txt+=nomor;
              input.setText(txt);

              }
       private void clear(){
              input.setText("");
              }
      
      
      
      

       @Override
       public void onClick(View v) {
              // TODO Auto-generated method stub
              switch (v.getId()) {
              case R.id.satu:
              handleNomor("1");
              break;
              case R.id.dua:
              handleNomor("2");
              break;
              case R.id.tiga:
              handleNomor("3");
              break;
              case R.id.empat:
              handleNomor("4");
              break;
              case R.id.lima:
              handleNomor("5");
              break;
              case R.id.enam:
              handleNomor("6");
              break;
              case R.id.tujuh:
              handleNomor("7");
              break;
              case R.id.delapan:
              handleNomor("8");
              break;
              case R.id.sembilan:
              handleNomor("9");
              break;
              case R.id.nol:
              handleNomor("0");
              break;
              case R.id.koma:
              handleNomor(".");
              break;
              case R.id.tambah:
              nilai1=Double.parseDouble(input.getText().toString());
              input.setText("");
              operator=1;
              break;
              case R.id.kurang:
              nilai1=Double.parseDouble(input.getText().toString());
              input.setText("");
              operator=2;
              break;
              case R.id.kali:
              nilai1=Double.parseDouble(input.getText().toString());
              input.setText("");
              operator=3;
              break;
              case R.id.bagi:
              nilai1=Double.parseDouble(input.getText().toString());
              input.setText("");
              operator=4;
              break;
              case R.id.pangkat:
              nilai1=Double.parseDouble(input.getText().toString());
              input.setText("");
              operator=5;
              break;
              case R.id.akar:
              nilai1=Double.parseDouble(input.getText().toString());
              double nilai3 = Math.sqrt(nilai1);
              input.setText(nilai3+"");
              break;
              case R.id.samadengan:
              nilai2=Double.parseDouble(input.getText().toString());
             
              if(operator==1){
              input.setText(Double.toString(nilai1+nilai2));
              }else if(operator==2){
              input.setText(Double.toString(nilai1-nilai2));
              }else if(operator==3){
              input.setText(Double.toString(nilai1*nilai2));
              }else if(operator==4){
              input.setText(Double.toString(nilai1/nilai2));
              }else if(operator==5){
              double hasil=1;
              int i;
              for (i=1;i<=nilai2;i++) {
              hasil= hasil*nilai1;
              }
              input.setText(hasil+"");
              }
              break;
              case R.id.clear:
              clear();
              break;
              default:
              break;
              }
       }

      
             
}

Untuk simulasi akan saya coba proses pemangkatan 2 pangkat 3 (2^3)
Untuk nilai1 adalah nilai dari angka yang akan di pangkatkan




Untuk nilai2 adalah nilai dari angka pemangkat

Maka hasil yang didapatkan sebagai berikut



Untuk penjelasannya Disini kita akan mengimplement OnClickListener, Konsepnya setiap inputan angka yang kita masukan akan di handle oleh prosedure private void handleNomor(String nomor) yang akan di tampilkan dalam TextView, kemudian nantinya akan kita simpan pada variable bernama nilai1 dan nilai2 dimana nilai1 aktif ketika Button perhitungan di aktifkan untuk nilai2 sendiri di tampung kitika pengaktifan Button samadengan (=) untuk perhitungannya akan di proses oleh setiap fungsi perhitungan yang berada dalam case dan  di wakili oleh operator 1-5Penggunaan parseDouble(input.getText().toString());Karena inputan dari EditText berupa String jadi harus di konversi ke tipe data yang diinginkanPenggunaan input.setText(Double.toString(String)); karena pengubahan kembali tipe data ke string digunakan oleh TextView yang hanya Menerima inputan berupa string
Selamat anda telah berhasil menyelesaikannya, Semoga dapat bermanfaat
Akhir kata saya tutup dengan kata mutiara “Code is nothing but with code we can do Anything”


Tidak ada komentar:

Posting Komentar