Professional Documents
Culture Documents
Assigment MAD
Assigment MAD
Final Assignment:
Haris mehar (19cs15)
Submitted To:- Dr. Ubaidullah Rajput
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
}
}
}