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

AP计算机科学作业:非硬编码实现提取字符串大写字母方法

基于ASCII表实现通用的大写字母提取方法

问题背景

你需要实现一个getUpper方法,输入输出均为String类型,要求通过ASCII表判断并提取字符串中的所有大写字母(禁止使用Java内置的便捷方法如Character.isUpperCase())。当前的硬编码版本通过判断字符ASCII值小于97来识别大写,但这种方式依赖魔法数字,不够通用和易读。

通用实现思路

在ASCII表中,大写字母的范围是从'A'(十进制ASCII值65)到'Z'(十进制ASCII值90)。直接使用字符字面量'A'和'Z'作为判断边界,替代硬编码的数字,既符合ASCII标准,又让代码更直观、易维护。

修改后的代码

替换原有的硬编码判断条件,修改后的完整代码如下:

public class homework5 {
    public homework5() {
    }
    
    public String getUpper(String s) {
        String output = "";
        for (int i = 0; i < s.length(); i++) {
            char c1 = s.charAt(i);
            // 用字符字面量判断是否在大写字母的ASCII范围内
            if (c1 >= 'A' && c1 <= 'Z') {
                output += c1;
            }
        }
        return output;
    }

    public static void main(String args[]) {
        homework5 obj1 = new homework5();
        // 测试示例
        System.out.println(obj1.getUpper("Hello, World")); // 输出 HW
        System.out.println(obj1.getUpper("no way")); // 输出 空字符串
    }
}

说明

  • 这种方式避免了依赖具体的数字(比如97),而是直接利用字符本身的ASCII特性,代码可读性更强,也更符合通用编程规范。
  • 完全满足作业要求:仅通过ASCII表判断,未使用任何便捷工具方法,且正确提取所有大写字母。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:31:20