Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 14

Mobile Application Development

Final Assignment:
Haris mehar (19cs15)
Submitted To:- Dr. Ubaidullah Rajput

Quaid-e-Awam University of Engineering, Science & Technology, Nawabshah


Activity main.xml
Activiy main.xml
Color .xml

Theme.xml
Main acivity

package com.example.calculatorhm
import android.annotation.SuppressLint
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Button
import com.example.calculatorhm.databinding.*

import java.lang.ArithmeticException
class MainActivity: AppCompatActivity() {
private lateinit var binding : ActivityMainBinding
private var lastNumeric= false
private var stateError= false
private var lastDigit= false
lateinit var expression : Expression
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding. Root)
}
fun onOperatorClick(view: View)
{
if(!stateError&&lastNumeric)
{
binding.questionValue.append((view as Button).text)
lastDigit= false
lastNumeric= false
onEqual()
}
}
fun onDigitClick(view: View)
{
if(stateError)
{
binding.questionValue.text= (view as Button).text
stateError= false
}
else {
binding.questionValue.append((view as Button).text)
}
lastNumeric= true
onEqual()
}
fun onAllClearClick()
{
binding.questionValue.text= ""
binding.answerValue.text= ""
stateError= false
lastNumeric= false
lastDigit= false
}

fun onEqualClick()
{
onEqual()
binding.questionValue.text=
binding.answerValue.text.toString().drop(1)
}

@SuppressLint("SetTextI18n")
private fun onEqual()
{
if(lastNumeric&& !stateError)
{
val text = binding.questionValue.text.toString()

this.expression = ExpressionBuilder(text).build()

try{
val result = expression.evaluate()

binding.answerValue.text= "=$result"
}
catch(e : ArithmeticException)
{
Log.e("Error",e.toString())
stateError= true
lastNumeric= false
}
}
}

private fun ExpressionBuilder(text: String): Any {

fun onClearClick(view: View) {}


fun onBackClick(view: View) {}
fun onAllClearClick(view: View) {}
}
Output;

You might also like