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

Android复选框触发CF计算逻辑异常:多选中生效单选中无返回

问题排查结果

  • 第一:if判断条件存在语法错误+逻辑不匹配
    你代码里的条件if (chkGejala2.isChecked() && || chkGejala4.isChecked() && chkGejala5.isChecked())存在无效的&& ||拼接,属于语法错误。即便你是笔误把||写错成了&&,当前逻辑也要求三个复选框全部勾选才会进入后续计算块,自然只勾选1个的时候不会触发计算,没有输出。
  • 第二:未处理非全选场景的取值异常
    就算你修改了条件让单选时能进入计算块,当前代码也会强制读取三个输入框的数值,如果只勾选1个,另外两个未勾选对应的输入框大概率是空值,执行Double.parseDouble读取空值会直接抛出NumberFormatException,程序触发异常中断,也不会有输出结果。
  • 第三:CF计算逻辑写死为三值合并,不支持单选/双选场景
    当前的CF合并逻辑是固定按2、4、5三个值依次合并计算的,没有根据实际勾选的症状动态调整计算逻辑,就算勉强跑通结果也不对。

修复方案

先修正判断逻辑,对每个复选框单独判断状态,只处理勾选的对应输入,再动态计算CF值,参考代码如下:

// 先定义变量存储选中的CF值列表
List<Double> selectedCF = new ArrayList<>();

// 分别判断每个复选框是否勾选,勾选的就取值计算对应CF
if (chkGejala2.isChecked()) {
    double doubleGejala2 = Double.parseDouble(txtNilaiGejala2.getText().toString());
    selectedCF.add(nilaiGejala2 * doubleGejala2);
}
if (chkGejala4.isChecked()) {
    double doubleGejala4 = Double.parseDouble(txtNilaiGejala4.getText().toString());
    selectedCF.add(nilaiGejala4 * doubleGejala4);
}
if (chkGejala5.isChecked()) {
    double doubleGejala5 = Double.parseDouble(txtNilaiGejala5.getText().toString());
    selectedCF.add(nilaiGejala5 * doubleGejala5);
}

// 只要有选中的项就执行CF合并
if (!selectedCF.isEmpty()) {
    double combineCF = selectedCF.get(0);
    for (int i = 1; i < selectedCF.size(); i++) {
        combineCF = combineCF + selectedCF.get(i) * (1 - combineCF);
    }
    String hasilHitungGejalaPenyakitA = String.valueOf((combineCF * 100));
    NamaPenyakit += "\nTipe 2"+"\n"+hasilHitungGejalaPenyakitA+" %";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:24:05