Skip to content

Commit 50d3601

Browse files
committed
feat(计算): 添加计算表达式
1 parent 79339f3 commit 50d3601

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

app/build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ dependencies {
5454
debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"
5555
debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version"
5656

57+
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
5758
implementation 'androidx.core:core-ktx:1.8.0'
5859
implementation "androidx.compose.ui:ui:$compose_version"
5960
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
@@ -70,4 +71,8 @@ dependencies {
7071
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.4.1'
7172

7273
implementation "com.apkfuns.logutils:library:1.7.5"
74+
/**
75+
* https://github.com/uklimaschewski/EvalEx
76+
*/
77+
implementation "com.udojava:EvalEx:2.7"
7378
}

app/src/main/java/com/jyn/composecalculator/DateViewModel.kt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import android.app.Application
44
import androidx.compose.runtime.mutableStateOf
55
import androidx.compose.ui.unit.dp
66
import androidx.lifecycle.AndroidViewModel
7+
import com.udojava.evalex.Expression
78

89
class DateViewModel(application: Application) : AndroidViewModel(application) {
9-
var idpPortrait = true
1010
var textBoxHeight = 0.dp
1111
var inputText = mutableStateOf("")
1212
var resultText = mutableStateOf("")
@@ -22,9 +22,22 @@ class DateViewModel(application: Application) : AndroidViewModel(application) {
2222

2323
fun clear() {
2424
inputText.value = ""
25+
resultText.value = ""
2526
}
2627

2728
fun calculate() {
28-
resultText.value = "XXXXX"
29+
val expr = inputText.value.replace('×', '*').replace('÷', '/')
30+
val expressions = arrayOf('+', '-', '*', '/')
31+
if (expr.isEmpty()) return
32+
if (!expressions.any { expr.contains(it) }) {
33+
return
34+
}
35+
if (expressions.any { expr.endsWith(it) }) {
36+
resultText.value = ""
37+
return
38+
}
39+
val eval = Expression(expr).eval()
40+
41+
resultText.value = eval.toString()
2942
}
3043
}

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
buildscript {
22
ext {
33
compose_version = '1.2.0-rc01'
4-
kotlin_version = '1.7.1'
4+
kotlin_version = '1.6.0'
55
}
66
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
77
plugins {

0 commit comments

Comments
 (0)