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
相关产品推荐
相关产品推荐

