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

Android应用if-else判断仅执行else分支问题排查

问题根因

你把读取EditText输入、给num变量赋值的逻辑写在了onCreate方法中,这个方法仅在Activity首次创建时执行1次。此时页面刚加载完成,用户还没来得及在输入框输入内容,读取到的输入值是空字符串,num始终是int类型的默认值0,永远不会等于4,所以点击提交时永远触发else分支的错误提示。

修复步骤
  • 删除onCreate里提前读取输入、给num赋值的那段代码
  • 把读取输入、解析数值的逻辑移到提交按钮的点击回调里,同时增加非空、数字格式校验,避免用户输入非数字时触发崩溃
修复后核心代码
submitBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // 点击提交时再实时读取输入框内容
        String ans = answer.getText().toString().trim();
        int num = 0;
        // 校验输入合法性
        if (!ans.isEmpty()) {
            try {
                num = Integer.parseInt(ans);
            } catch (NumberFormatException e) {
                Toast.makeText(MainActivity.this, "请输入有效数字", Toast.LENGTH_SHORT).show();
                return;
            }
        } else {
            Toast.makeText(MainActivity.this, "请输入答案", Toast.LENGTH_SHORT).show();
            return;
        }

        if (num == 4){
            Toast.makeText(MainActivity.this, "Answer is Correct!", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(MainActivity.this, "Answer is Incorrect", Toast.LENGTH_SHORT).show();
        }
    }
});

注意:原代码里num是成员变量,修复后如果其他地方没有用到这个变量,可以直接删掉成员变量声明,在点击回调里定义局部变量即可,避免全局变量值异常引发其他问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:48:20