diff options
author | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2024-12-18 11:15:23 +0330 |
---|---|---|
committer | A404M <ahmadmahmoudiprogrammer@gmail.com> | 2024-12-18 11:15:23 +0330 |
commit | 5a670d6cae41d77280a98936f2baddf31f069656 (patch) | |
tree | b1a15d3794f820278bbae5c1fb0cf73627e55139 /app/src/main/java/com | |
parent | d4573cacc141748c44bb6bbea7528bdd46afc3d5 (diff) |
fixed bugs in multiple operators
updated launcher icon
Diffstat (limited to 'app/src/main/java/com')
-rw-r--r-- | app/src/main/java/com/a404m/calculator/model/CalcButtonModel.kt | 2 | ||||
-rw-r--r-- | app/src/main/java/com/a404m/calculator/util/MathHelper.kt (renamed from app/src/main/java/com/a404m/calculator/MathHelper.kt) | 25 |
2 files changed, 16 insertions, 11 deletions
diff --git a/app/src/main/java/com/a404m/calculator/model/CalcButtonModel.kt b/app/src/main/java/com/a404m/calculator/model/CalcButtonModel.kt index 435acef..c6a10da 100644 --- a/app/src/main/java/com/a404m/calculator/model/CalcButtonModel.kt +++ b/app/src/main/java/com/a404m/calculator/model/CalcButtonModel.kt @@ -1,6 +1,6 @@ package com.a404m.calculator.model -import com.a404m.calculator.MathHelper +import com.a404m.calculator.util.MathHelper data class CalcButtonModel( val text: String, diff --git a/app/src/main/java/com/a404m/calculator/MathHelper.kt b/app/src/main/java/com/a404m/calculator/util/MathHelper.kt index fa6cfc7..d0c3ee3 100644 --- a/app/src/main/java/com/a404m/calculator/MathHelper.kt +++ b/app/src/main/java/com/a404m/calculator/util/MathHelper.kt @@ -1,7 +1,7 @@ -package com.a404m.calculator +package com.a404m.calculator.util import android.util.Log -import com.a404m.calculator.MathHelper.Operator.Kind +import com.a404m.calculator.util.MathHelper.Operator.Kind import java.nio.charset.UnsupportedCharsetException object MathHelper { @@ -113,7 +113,8 @@ object MathHelper { if (lexed.size == 1) { break } - for (i in lexed.indices) { + var i = -1 + while(++i < lexed.size) { val item = lexed[i] if (item is BasicOperator) { var op = item.toOperator( @@ -132,17 +133,19 @@ object MathHelper { Kind.INFIX -> { op.operands.add(lexed.removeAt(i - 1)) op.operands.add(lexed.removeAt(i)) + i -= 2 } Kind.PREFIX -> { op.operands.add(lexed.removeAt(i + 1)) + --i } Kind.POSTFIX -> { op.operands.add(lexed.removeAt(i - 1)) + --i } } - break } } } @@ -195,10 +198,10 @@ object MathHelper { private class Operator( val operator: Char, val kind: Kind, - val operate: (operands:List<Operand>)->Operand, + val operate: (operands:List<Operand>)-> Operand, val operands: ArrayList<Any> = arrayListOf(), ) { - fun cloneWithoutOperands():Operator{ + fun cloneWithoutOperands(): Operator { return Operator( operator, kind, @@ -262,15 +265,17 @@ object MathHelper { items: List<Any>, i: Int ): Operator { - val left = items.getOrElse( + val leftItem = items.getOrElse( i - 1, { Any() }, - ) is Operand + ) + val left = leftItem is Operand || leftItem is Operator - val right = items.getOrElse( + val rightItem = items.getOrElse( i + 1, { Any() }, - ) is Operand + ) + val right = rightItem is Operand || rightItem is Operator val k:Kind |