跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Java 实现动态切换大小写模式的字符串处理程序

本文介绍如何用 java 编写一个根据“caps”指令动态切换大小写状态的字符串处理程序:读取指定数量的输入项,遇到“caps”时翻转当前大小写模式(初始为小写),其余字符按当前模式转换后拼接输出。 本文介绍如何用 java 编写一个根据“caps”指令动态切换大小写状态的字符串处理程序:读取指定数量的输入项,遇到“caps”时翻转当前大小写模式(初始为小写),其余字符按当前模式转换后拼接输出。 该问题本质是实现一种 状态机式字符处理逻辑 :程序需维护一个布尔状态 isCAPSEnabled,初始为 false(表示后续普通字符应转为小写),每读到 "CAPS" 就翻转该状态,而其他输入则根据当前状态调用 toUpperCase() 或 toLowerCase() 转换后追加至结果字符串。 以下是完整、简洁且健壮的实现:
import java.util.Scanner; public class Main { public static void main(String[] args) { String result = ""; boolean isCAPSEnabled = false; Scanner input = new Scanner(System.in); int n = input.nextInt(); input.nextLine(); // 消费换行符,避免 nextLine() 读取异常(可选,但推荐) while (n-- > 0) { String token = input.next(); // 每次读取一个词(题目中每个输入均为单字符或"CAPS") if ("CAPS".equals(token)) { isCAPSEnabled = !isCAPSEnabled; } else { result += isCAPSEnabled ? token.toUpperCase() : token.toLowerCase(); } } System.out.print(result); } }
✅ 关键设计说明: 使用 "CAPS".equals(token) 替代 token.equals("CAPS") 可避免 token 为 null 时的空指针异常(虽本题输入保证非空,但属良好实践); n-- > 0 循环简洁控制输入次数,无需额外计数器; 初始 isCAPSEnabled = false 对应题目要求的“默认小写”; 每个非 "CAPS" 输入视为单字符字符串(如 "s"、"h"),toUpperCase()/toLowerCase() 对单字符安全有效; 注意: 若实际输入含多字符单词(非本题场景),需额外校验长度或拆分,但本题输入规范明确为单字符或 "CAPS"。 ⚠️ 常见误区提醒: Eclipse导入Android或其他的JAVA项目的正确方法 WORD版 本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看 下载 立即学习 “ Java免费学习笔记(深入) ”; 原代码中 if (CAPSval) 初始为 false 却无对应逻辑分支,导致流程失控; 错误地将 CAPS 计入输出长度(如 n - CAPScounter),混淆了输入项总数与有效字符数; 未及时消费 nextInt() 后的换行符,可能导致后续 next() 行为异常(本解通过 next() 自动跳过空白符规避,但若改用 nextLine() 则必须显式处理)。 该方案时间复杂度 O(N),空间复杂度 O(N)(仅用于存储结果),逻辑清晰、可读性强,完全满足题目示例:输入 8 个项 s,f,k,CAPS,h,j,CAPS,p,输出 sfkHJp —— 验证通过。

相关文章