Java中charAt()与str.length()报错,回文判断代码故障求助
问题原因与修复方案
你的代码报错核心原因是类名和Java内置的java.lang.String类重名:
- 你自定义了
public class String,这会让代码中所有的String标识符默认指向你自己的类,而非Java自带的字符串类 - 你自己的
String类没有实现charAt()和length()方法,因此调用这些方法时会触发编译报错
修复步骤
- 将自定义类名改为非Java核心类名的名称,比如
PalindromeChecker - 保留原有的回文判断逻辑,仅调整类名相关的引用
修复后的完整代码
public class PalindromeChecker { public static boolean palindrome(String str){ for(int i=0; i<str.length()/2; i++){ if(str.charAt(i)!=str.charAt(str.length()-1-i)){ return false; } } return true; } public static void main(String args[]) { String str = "racecar"; System.out.println(palindrome(str)); } }
额外提示
- Java的
java.lang包下核心类(如String、Integer)无需手动导入,但自定义类与它们重名时,会覆盖默认的类引用,这是新手易踩的坑 - 你的回文判断逻辑是正确的:通过对比字符串首尾对称位置的字符实现判断,时间复杂度为O(n),属于高效的基础实现方式
内容的提问来源于stack exchange,提问作者Bhavya Chandwani
相关产品推荐
相关产品推荐

