SEO (Arama Motoru Optimizasyonu) Mikro İnteraktif ÜCRETSİZ - Google Play'den İndirin

Android'de Java ile Basit Hesap Makinesi Yapalım

Bu dersimizde temel olarak dört işlemi kapsayan, sayısal değer ve boş girdi kontrollerini yapan basit bir hesap makinesi yapalım.

İlk olarak bir tane boş activity açalım.
Proje Oluşturma
Android Proje Oluşturma

Projemizin ayarlamalarını yapalım.
Proje Ayarları
Android Proje Oluşturma Ayarlar

Projemiz oluştu. Oluşan bu boş projenin dosyalarına bakalım.
Boş Proje Yapısı
Android Boş Proje Yapısı

Oluşturacağımız projenin EditText, TextView gibi elemanlarının biraz daha güzel görünmesi için drawable klasörüne bir tane shape_kenarlik.xml ekleyip renk, kenarlık gibi değerlerini içerisinde belirtelim.
Drawable Klasörüne Tasarım Nesnesi Ekleyelim
Drawable Klasörüne Tasarım Nesnesi Ekleyelim

Açılan pencerede şu bilgilerle bir adet shape_kenarlik.xml dosyası oluşturalım.
shape_kenarlik.xml
shape_kenarlik.xml

shape_kenarlik.xml Betikleri
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
  <solid android:color="#f2f2f2" />
  <stroke android:width="1dip" android:color="#FF6200EE"/>
</shape>
shape_kenarlik.xml Görünüm
shape_kenarlik.xml Görünüm

Ufak tefek hazırlıkları tamamladık. Sıra geldi ekrandaki öğeleri tasarlamaya. Ekran öğelerimiz şu şekilde olacak
activity_main.xml Betikleri
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="10dp"
        android:orientation="vertical">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:weightSum="5">
            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="Sayı 1"
                android:layout_weight="1"
                android:layout_marginRight="2dp">
                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/etSayi1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ems="10"
                    android:inputType="numberDecimal"
                    android:background="@drawable/shape_kenarlik"
                    android:gravity="center"/>
            </com.google.android.material.textfield.TextInputLayout>
            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="İşlem"
                android:layout_weight="1"
                android:layout_marginRight="2dp">
                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/etIslem"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ems="1"
                    android:inputType="text"
                    android:background="@drawable/shape_kenarlik"
                    android:gravity="center"/>
            </com.google.android.material.textfield.TextInputLayout>
            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="Sayı 2"
                android:layout_weight="1"
                android:layout_marginRight="2dp">
                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/etSayi2"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ems="10"
                    android:inputType="numberDecimal"
                    android:background="@drawable/shape_kenarlik"
                    android:gravity="center"/>
            </com.google.android.material.textfield.TextInputLayout>
            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:layout_marginRight="2dp">
                <com.google.android.material.textfield.TextInputEditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ems="1"
                    android:inputType="text"
                    android:background="@drawable/shape_kenarlik"
                    android:gravity="center"
                    android:text="="
                    android:enabled="false"/>
            </com.google.android.material.textfield.TextInputLayout>
            <com.google.android.material.textfield.TextInputLayout
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:hint="Sonuç"
                android:layout_weight="1">
                <com.google.android.material.textfield.TextInputEditText
                    android:id="@+id/etSonuc"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:ems="10"
                    android:inputType="text"
                    android:background="@drawable/shape_kenarlik"
                    android:gravity="center"
                    android:enabled="false"/>
            </com.google.android.material.textfield.TextInputLayout>
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp">
            <Button
                android:id="@+id/btnSonuc"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Hesapla"/>
        </LinearLayout>
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Tasarım Önizleme
Tasarım Önizleme

Tasarım çalışması bitti. Hesaplamalar için yapılması gereken kodlamaya geçelim. Kodlama kısmındaki işleyiş;
- EditText, Button gibi tasarım nesnelerini global olarak tanımlayacağız.
- findViewById metodu sayesinde tasarım nesnelerini xml içerisinde bulacağız.
- Button setOnClickListener olayı sayesinde btnHesapla adlı butona tıklandığını anlayıp işlemlerimizi başlatacağız.
- getText() metodu ile EditText nesnelerine girilen değerleri alıp bir değişkene aktaracağız.
- Regular Expressions (Düzenli İfadeler) sayesinde girilen bir değerin istediğimiz düzende olup olmadığını kontrol edeceğiz. Örnek olarak girilen bir değerin double olup olmadığını kontrol edeceğiz.
- if koşulu ile gereken şartların sağlanıp sağlanmadığını kontrol edeceğiz. Örnek olarak bir sayının sıfıra bölümünün tanımsız olduğunu bildireceğiz.
- Toast Mesaj sayesinde kullanıcıya uyarı verdireceğiz.
- TextUtils.isEmpty() ile bir değerin var olup olmadığını kontrol edeceğiz.
- switch case yapısı ile çarpma, bölme, çıkarma ve toplama işlemlerinin yapılmasını sağlayacağız.
- setText() metodu ile çıkan sonucu ilgili EditText'e yazdıracağız.
Kısaca işleyiş yapısını sizlere aktarmış olduk. Şimdi uygulama açıldığında çalışan activity olan (MainActivity.java) içerisinde kodlarımızı hazırlayalım.
MainActivity.java
package com.deneme.hesapmakinesi;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    EditText etSayi1, etIslem, etSayi2, etSonuc;
    Button btnSonuc;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        etSayi1 = (EditText) findViewById(R.id.etSayi1);
        etIslem = (EditText) findViewById(R.id.etIslem);
        etSayi2 = (EditText) findViewById(R.id.etSayi2);
        etSonuc = (EditText) findViewById(R.id.etSonuc);
        btnSonuc = (Button) findViewById(R.id.btnSonuc);

        btnSonuc.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String strSayi1 = etSayi1.getText().toString();
                String strSayi2 = etSayi2.getText().toString();
                String strIslem = etIslem.getText().toString();
                etSonuc.setText("");
                boolean blnSayi1 = fnDoubleKontrol(strSayi1);
                boolean blnSayi2 = fnDoubleKontrol(strSayi2);
                boolean blnIslem = fnIslemKontrol(strIslem);
                String strUyari = "";
                if (!blnSayi1)
                    strUyari = "- Lütfen sayı 1 giriniz.\n";
                if (!blnSayi2)
                    strUyari += "- Lütfen sayı 2 giriniz.\n";
                if (!blnIslem)
                    strUyari += "- Lütfen '+', '-', '*' veya '/' işlemi giriniz.\n";
                else
                {
                    if (strIslem.equals("/"))
                    {
                        if (strSayi2.contains("0"))
                            strUyari += "- Bir sayının sıfıra bölümü tanımsızdır";
                    }
                }

                if (!TextUtils.isEmpty(strUyari))
                    Toast.makeText(getApplicationContext(), strUyari, Toast.LENGTH_LONG).show();
                else
                {
                    String strSonuc = "";
                    switch(strIslem) {
                        case "+":
                            strSonuc = String.valueOf(Double.parseDouble(strSayi1) + Double.parseDouble(strSayi2));
                            break;
                        case "-":
                            strSonuc = String.valueOf(Double.parseDouble(strSayi1) - Double.parseDouble(strSayi2));
                            break;
                        case "/":
                            strSonuc = String.valueOf(Double.parseDouble(strSayi1) / Double.parseDouble(strSayi2));
                            break;
                        case "*":
                            strSonuc = String.valueOf(Double.parseDouble(strSayi1) * Double.parseDouble(strSayi2));
                            break;
                        default:
                            break;
                    }
                    etSonuc.setText(strSonuc);
                }
            }
        });
    }
    public boolean fnDoubleKontrol(String strDeger)
    {
        boolean blnSonuc = false;
        if (!TextUtils.isEmpty(strDeger))
            blnSonuc = strDeger.matches("[0-9]{1,13}(\\.[0-9]*)?");
        return blnSonuc;
    }
    public boolean fnIslemKontrol(String strDeger)
    {
        boolean blnSonuc = false;
        if (!TextUtils.isEmpty(strDeger))
        {
            if (strDeger.equals("+") || strDeger.equals("-") || strDeger.equals("*") || strDeger.equals("/"))
                blnSonuc = true;
        }
        return blnSonuc;
    }
}

Örnek 1
Android Hesap Makinesi Örnek 1
Örnek
Android'de Java ile Basit Hesap Makinesi Yapalım

Yorumlar

Yorum Yaz

Avatar

REKLAM

DDos Koruma, Botnet Koruma, Layer 7 Saldırı koruması, Sanal sunucu, Vds sunucu

REKLAM

Çizgi Filmler

REKLAM

Çocuk Etkinlikleri Uygulaması

EN

  • Popüler
  • Yeni
  • Son Yorum