package Ġcom . example . my calculator Ċ Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġtext Input And Results : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlast Numeric : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġlast Dot : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġdot Pressed : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. hide () ĊĊĠĠĠĠĠĠĠ Ġtext Input And Results Ġ= ĠfindViewById ( R . id . textInput And Results ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Digit ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(( view Ġas ĠButton ). text . equals (". ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* check Ġif Ġthe Ġdot Ġis Ġvalid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthe Ġdot Ġwill Ġonly Ġbe Ġvalid Ġif : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġthe Ġlast Ġdigit Ġwas Ġa Ġnumber ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġthe Ġlast Ġdigit Ġwas ĠNOT Ġa Ġdot ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġthe Ġdot Ġwasn 't Ġpressed */ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Numeric Ġ&& Ġ! last Dot Ġ&& Ġ! dot Pressed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Input And Results ?. append ( view . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Numeric Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Dot Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdot Pressed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Input And Results ?. append ( view . text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Numeric Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Dot Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Clr ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Input And Results ?. text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġdot Pressed Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Operator ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Input And Results ?. text . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Numeric Ġ&& Ġ! was Operator Added ( it . toString ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Input And Results ?. append (( view Ġas ĠButton ). text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Numeric Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdot Pressed Ġ= Ġfalse Ġ// enable s Ġusing Ġa Ġdot Ġin Ġboth Ġn . Ġ- Ġotherwise Ġonly Ġthe Ġfirst Ġn . Ġcould Ġhave Ġa Ġdot ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwas Operator Added ( text : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( text . startsWith ("- ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext . contains ("/") Ġ|| Ġtext . contains ("* ") Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext . contains ("- ") Ġ|| Ġtext . contains ("+ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Equal ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( last Numeric ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext Value Ġ= Ġtext Input And Results ?. text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġprefix Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Value . startsWith ("- ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Ġ= Ġ"-" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value Ġ= Ġtext Value . substring ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult : ĠDouble Ġ= Ġ 0 . 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value . contains ("/") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsplit ted Value Ġ= Ġtext Value . split ("/ "). to Mutable List () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prefix Ġ== Ġ(" - ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsplit ted Value [ 0 ] Ġ= Ġprefix Ġ+ Ġsplit ted Value [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġsplit ted Value [ 0 ]. toDouble () Ġ/ Ġsplit ted Value [ 1 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value . contains ("* ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsplit ted Value Ġ= Ġtext Value . split ("* "). to Mutable List () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prefix Ġ== Ġ(" - ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsplit ted Value [ 0 ] Ġ= Ġprefix Ġ+ Ġsplit ted Value [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġsplit ted Value [ 0 ]. toDouble () Ġ* Ġsplit ted Value [ 1 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value . contains ("- ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsplit ted Value Ġ= Ġtext Value . split ("- "). to Mutable List () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prefix Ġ== Ġ(" - ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsplit ted Value [ 0 ] Ġ= Ġprefix Ġ+ Ġsplit ted Value [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġsplit ted Value [ 0 ]. toDouble () Ġ- Ġsplit ted Value [ 1 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Value . contains ("+ ") Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsplit ted Value Ġ= Ġtext Value . split ("+ "). to Mutable List () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prefix Ġ== Ġ(" - ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsplit ted Value [ 0 ] Ġ= Ġprefix Ġ+ Ġsplit ted Value [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġsplit ted Value [ 0 ]. toDouble () Ġ+ Ġsplit ted Value [ 1 ]. toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . toString (). contains (". 0 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Input And Results ?. text Ġ= Ġresult . toString (). substring ( 0 , Ġresult . toString (). length Ġ- Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Input And Results ?. text Ġ= Ġresult . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠArithmetic Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġe . message , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// TODO : ĠEach Ġtime Ġyou Ġpress Ġany Ġbutton , Ġit Ġshould Ġtest Ġif Ġcan Ġcalculate ĊĠĠĠĠĠĠĠ Ġ// create Ġa Ġfunction Ġto Ġtest Ġif Ġthe Ġcalculation Ġcan Ġbe Ġdone ĊĠĠĠ Ġ} Ċ }