Java字符串反转代码报错求助:排查问题并寻求解决方案
你的Java字符串反转代码的问题分析与修复方案
我来帮你拆解代码里的每一个问题,一步步把它改对!
代码里的核心错误点
- 方法嵌套定义违规:你把
Reverse方法直接写在了main方法内部,Java不允许在方法里嵌套定义另一个方法,必须把Reverse放到RevString类的层级,和main方法同级。 - 方法语法与修饰符错误:
Reverse方法的定义缺了返回值类型(这里不需要返回值,应该加void);另外main是静态方法,直接调用非静态方法会报错,所以要把Reverse改成static,或者在main里实例化类对象再调用。 - 字符串字符访问错误:Java里不能用数组下标
str[i]直接取字符串的字符,必须用str.charAt(i)方法来获取指定索引的字符。 - 变量未初始化:
String rev;只声明了变量但没赋值,直接执行rev = str[i] + rev会触发空指针异常,得初始化为空字符串String rev = "";。 - 循环逻辑双重错误:
i <= len会导致索引越界——字符串的下标范围是0到len-1,超出这个范围会报错;- 从
i=0开始遍历的话,拼接出来的结果是原字符串的顺序,不是反转,应该从最后一个字符(索引len-1)往前遍历到0。
修正后的完整代码
public class RevString { // 将Reverse方法移到类层级,改为static方便main直接调用 public static void Reverse(String str) { int len = str.length(); // 初始化rev为空字符串,避免空指针 String rev = ""; // 从最后一个字符开始向前遍历 for (int i = len - 1; i >= 0; i--) { // 用charAt获取字符,拼接到rev中 rev = rev + str.charAt(i); } System.out.println(rev); } public static void main(String[] args) { // 直接调用静态的Reverse方法 Reverse("Canyon"); } }
运行这段代码后,会输出反转后的结果:ynanoC。
内容的提问来源于stack exchange,提问作者Shah Quadri
相关产品推荐
相关产品推荐

