
本文介绍一种简洁高效的方法,使用 substring() 和 touppercase() 将任意字符串的最后两个字符转换为大写,并支持从键盘输入实时处理。适用于初学者,代码清晰、逻辑直观、无冗余操作。
要实现“将字符串最后两个字母转为大写”(如输入 "eat" → 输出 "eAT"),关键在于:分离字符串的前缀部分与末尾两个字符,单独对后缀调用 toUpperCase(),再拼接返回。相比原代码中复杂的手动 ASCII 运算和单词遍历逻辑,该方法更安全、可读性更强,且天然规避了空指针、越界或非字母字符误处理等问题。
以下是完整可运行的示例程序,包含键盘输入支持(使用 Scanner):
import java.util.Scanner;
public class CapitalizeLastTwo {
public static String capitalizeLastTwo(String str) {
// 边界检查:字符串为空或长度不足2个字符时,直接返回原串(或按需抛异常/补全)
if (str == null || str.length() < 2) {
return str;
}
int cutIndex = str.length() - 2;
String prefix = str.substring(0, cutIndex);
String suffix = str.substring(cutIndex);
return prefix + suffix.toUpperCase();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个单词:");
String input = scanner.nextLine().trim();
String result = capitalizeLastTwo(input);
System.out.println("处理结果:" + result);
scanner.close();
}
}✅ 运行示例:
请输入一个单词:eat 处理结果:eAT 请输入一个单词:hello 处理结果:helLO 请输入一个单词:a 处理结果:a (长度不足2,保持原样)
⚠️ 注意事项:
立即学习“Java免费学习笔记(深入)”;
- substring() 方法不修改原字符串(Java 字符串不可变),因此无需担心副作用;
- toUpperCase() 会智能处理 Unicode 字母(如带重音符号的字符),比手动 ASCII 计算(如 -32)更健壮;
- 若需严格限定只处理英文字母(跳过标点或数字),可在截取后先校验 suffix 是否全为字母,再执行 toUpperCase();
- 对于多词字符串(如 "hello world"),本方案默认整体处理——若需每个单词分别处理最后两个字母,则需先 split(" ") 再逐词应用 capitalizeLastTwo()。
掌握这种「分段 + 转换 + 拼接」的思路,不仅能解决当前问题,也为后续处理子串格式化(如首字母大写、掩码脱敏等)打下坚实基础。










