summaryrefslogtreecommitdiff
path: root/app/src/main/java
diff options
context:
space:
mode:
authorA404M <ahmadmahmoudiprogrammer@gmail.com>2024-12-18 11:15:23 +0330
committerA404M <ahmadmahmoudiprogrammer@gmail.com>2024-12-18 11:15:23 +0330
commit5a670d6cae41d77280a98936f2baddf31f069656 (patch)
treeb1a15d3794f820278bbae5c1fb0cf73627e55139 /app/src/main/java
parentd4573cacc141748c44bb6bbea7528bdd46afc3d5 (diff)
fixed bugs in multiple operators
updated launcher icon
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/com/a404m/calculator/model/CalcButtonModel.kt2
-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