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

Android Studio中字符串末尾字符比较功能失效问题求助

解决Android时间编码应用的字符串末尾判断问题

嘿,我来帮你搞定这个字符串末尾字符比较失效的问题!先理清楚你的需求:输入纯数字就输出带A.M.的时间,数字末尾加"p"就输出P.M.的时间对吧?结合你给出的代码片段,我猜大概率是这几个常见坑导致的问题,给你一步步梳理解决方案:

常见问题原因

  • 输入带前后空格:用户输入时不小心加了空格(比如"10p "),这时候取最后一个字符就不是"p"了
  • 索引越界风险:如果直接用charAt(satamin.length()-1)判断,当输入为空时会抛出异常
  • 大小写没兼容:如果用户输入大写"P",你的判断逻辑可能没覆盖到

修正后的完整代码片段

sat_amin.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        EditText sat_amin = (EditText) findViewById(R.id.asd);
        TextView dsa = (TextView) findViewById(R.id.dsa);
        // 先去除输入字符串的前后空格,避免空格干扰判断
        String satamin = sat_amin.getText().toString().trim();

        // 处理空输入的情况
        if (satamin.isEmpty()) {
            dsa.setText("请输入有效的时间数字");
            return true;
        }

        // 用endsWith判断是否以p/P结尾,简洁又可靠
        boolean isPM = satamin.endsWith("p") || satamin.endsWith("P");
        String timeContent;

        if (isPM) {
            // 去掉末尾的p/P,提取纯数字部分
            String timePart = satamin.substring(0, satamin.length() - 1);
            // 可选:验证时间部分是否为纯数字,避免非法输入
            if (timePart.matches("\\d+")) {
                timeContent = timePart + " P.M.";
            } else {
                timeContent = "请输入有效格式:数字 或 数字+p";
            }
        } else {
            // 验证是否为纯数字
            if (satamin.matches("\\d+")) {
                timeContent = satamin + " A.M.";
            } else {
                timeContent = "请输入有效格式:数字 或 数字+p";
            }
        }

        dsa.setText(timeContent);
        return true;
    }
});

关键优化点说明

  1. trim()处理空格:彻底消除用户输入时不小心添加的前后空格,保证判断的准确性
  2. endsWith()替代手动取字符:这个方法本身就会帮你处理字符串长度的问题,不会出现索引越界,同时代码更易读
  3. 兼容大小写:同时判断"p"和"P",覆盖用户的不同输入习惯
  4. 增加输入验证:避免用户输入非数字内容导致的异常,提升应用的健壮性
  5. 空输入处理:给用户明确的提示,避免界面无响应的困惑

如果还有问题,可以检查下你的EditText是否设置了正确的输入类型(比如允许数字和字母),避免输入法限制了用户输入"p"哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:51:18