You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jetpack Compose中如何将TextField输入内容转换为整数实现数值求和

问题原因
  • 你声明的num1、num2都是String类型,Kotlin中字符串类型的+运算符默认执行拼接逻辑,不会做数值计算。
  • 原代码的求和逻辑是在页面重组时直接执行的,没有做类型校验和转换,自然只能得到拼接结果。
修改方案

在触发按钮点击事件时,先将两个输入的字符串转为数值类型再做求和,同时增加非法输入的兼容处理,修改后的完整代码如下:

fun Add(context: Context) {
    var num1 by remember { mutableStateOf("") }
    var num2 by remember { mutableStateOf("") }
    Column(
        modifier = Modifier.fillMaxSize(),
        horizontalAlignment = Alignment.CenterHorizontally,
        verticalArrangement = Arrangement.Top
    ) {
        TextField(
            value = num1,
            // 限制只允许输入数字,避免非法输入
            keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
            onValueChange = { num1 = it })
        TextField(
            value = num2,
            keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Number),
            onValueChange = { num2 = it })
    }

    Column(
        modifier = Modifier.fillMaxSize(),
        verticalArrangement = Arrangement.Bottom,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Button(onClick = {
            // 尝试转成Int,转换失败返回null做兼容
            val n1 = num1.toIntOrNull()
            val n2 = num2.toIntOrNull()
            if (n1 != null && n2 != null) {
                val sum = n1 + n2
                Toast.makeText(
                    context,
                    "result:$sum",
                    Toast.LENGTH_SHORT
                ).show()
            } else {
                Toast.makeText(
                    context,
                    "请输入有效数字",
                    Toast.LENGTH_SHORT
                ).show()
            }
        }) { Text("output") }
    }
}
额外修复的问题
  • 删掉了原代码中无用的冗余代码remember { mutableStateOf("") }
  • 修复了原代码中fillMaxsize拼写错误(正确写法为fillMaxSize)、Toast.maketext拼写错误(正确写法为Toast.makeText)
  • 把求和逻辑移到了按钮点击回调中,不需要每次页面重组都计算sum,提升性能

内容的提问来源于stack exchange,提问作者user14004870

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:15:06