如何利用命令行参数实现Reversal类的字符串反转功能?
命令行字符串反转的代码修正
先梳理你代码里的核心问题:
- 数组索引越界:
i初始设为input.length(),但字符串、数组的索引从0开始,最大索引是length-1,直接用i调用charAt(i)会抛出索引越界异常 - 赋值逻辑错误:
++i会让i持续增大,完全违背反转的遍历逻辑,应该从输入字符串的末尾往前读,同时往输出数组的开头往后写 - 方法无返回值:
reverseChar是void类型,无法返回反转后的结果供调用方使用 - main方法未处理命令行参数:既没读取
args参数,也没调用反转方法、输出最终结果
修正后的完整代码:
public class Reversal { // 修改方法为返回反转后的字符串 static String reverseChar(String input) { char output[] = new char[input.length()]; // 输入字符串从最后一位开始遍历 int inputIndex = input.length() - 1; // 输出数组从第一位开始填充 int outputIndex = 0; while (inputIndex >= 0) { output[outputIndex] = input.charAt(inputIndex); inputIndex--; outputIndex++; } return new String(output); } public static void main(String[] args) { // 检查是否传入命令行参数 if (args.length == 0) { System.out.println("请在命令行传入需要反转的字符串"); return; } // 处理第一个命令行参数并输出结果 String reversedStr = reverseChar(args[0]); System.out.println("反转结果:" + reversedStr); } }
运行步骤
- 编译代码:
javac Reversal.java - 带参数运行:
java Reversal "Hello StackOverflow" - 输出结果:
反转结果:wolfrevOkcatS olleH
内容的提问来源于stack exchange,提问作者palace
相关产品推荐
相关产品推荐

