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

Android中if else语句失效问题求助:答题应用逻辑异常

问题分析与解决方案

嘿,我一眼就发现你代码里的问题啦!这是Java字符串比较中非常常见的坑~

核心问题:错误使用==比较字符串内容

在Java里,==运算符用来判断两个对象的内存引用是否相同,而不是比较字符串的实际内容。你这里写的btn_continue.getText() == "Continue",本质是在判断getText()返回的CharSequence对象和字符串字面量"Continue"是不是同一个对象,而不是看它们的文本内容是否一致,这就导致明明内容匹配,条件却不成立,直接跳到了else分支。

修正后的代码

把字符串比较改成用equals()方法,同时为了避免空指针和类型问题,建议先把CharSequence转成String,还可以加上trim()处理用户可能输入的多余空格:

public void checkAnswer_condition_q2(View view) {
    EditText blank_one = (EditText)findViewById(R.id.fill_condition1);
    EditText blank_two = (EditText)findViewById(R.id.fill_condition2);
    
    // 修正字符串比较逻辑:用equals判断内容,同时处理空和空格
    String btnText = btn_continue.getText().toString().trim();
    if("Continue".equals(btnText)){
        Intent intent = new Intent(condition_q2.this, loops.class);
        startActivity(intent);
        // 可选:如果需要关闭当前页面,添加finish();
    } else if(/* 你的其他条件 */) {
        // 其他分支逻辑
    } else {
        // 默认分支逻辑
    }
}

为什么这么改?

  • "Continue".equals(btnText):把常量放在前面可以避免空指针异常——如果btn_continue的文本为空,btnText会是空字符串,但equals()会安全返回false,不会抛出NullPointerException。
  • trim():处理用户不小心输入的前后空格,比如用户输入了" Continue "(带空格),也能正确匹配目标文本。
  • 转成String:getText()返回的是CharSequence,虽然部分情况下CharSequence的equals()也能工作,但统一转成String后比较更稳妥,避免潜在的类型匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:05:46