Java实现字符串校验:偶数长度交换相邻字符,奇数输出无效提示
补全solve方法的具体实现
核心执行逻辑
solve方法严格按照规则要求按顺序执行校验和操作:
- 首先判断输入字符串长度:如果长度为奇数,直接抛出携带“无效字符串”消息的异常。
- 对长度为偶数的字符串逐字符校验:如果任意位置存在数字字符,同样抛出携带“无效字符串”消息的异常。
- 全部校验通过的字符串(偶数长度、无数字字符),转换为字符数组后从索引0开始以步长2遍历,逐次交换相邻两个位置的字符,最终将处理后的字符数组拼接为字符串返回。
补全后的完整程序代码
import java.io.*; import java.util.*; class Main { static String solve(String str) throws Exception { int len = str.length(); // 长度为奇数直接触发异常 if (len % 2 != 0) { throw new Exception("无效字符串"); } char[] charArr = str.toCharArray(); // 检查字符串中是否存在数字字符 for (char c : charArr) { if (Character.isDigit(c)) { throw new Exception("无效字符串"); } } // 逐对交换相邻位置字符 for (int i = 0; i < len; i += 2) { char temp = charArr[i]; charArr[i] = charArr[i + 1]; charArr[i + 1] = temp; } return new String(charArr); } public static void main(String []args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int t = Integer.parseInt(br.readLine()); for (int i = 0; i < t; i++) { String str = br.readLine(); try { System.out.println(solve(str)); } catch(Exception e) { System.out.println(e.getMessage()); } } } }
运行效果示例
输入参数:
t=2
第一个待处理字符串:hgtsgf
第二个待处理字符串:tadad
程序输出:
- 第一个字符串处理结果:
ghstfg(逐对交换规则:hg→gh,ts→st,gf→fg,拼接为最终结果) - 第二个字符串处理结果:
无效字符串(字符串长度为奇数,触发异常分支)
内容的提问来源于stack exchange,提问作者Madhav Singh Rajput
相关产品推荐
相关产品推荐

