调用reader.nextLine()时出现‘cannot find symbol’错误求助
解决你的字符串反转与输入问题
嘿,我来帮你搞定这两个关键问题!咱们一步步拆解:
1. "cannot find symbol: reader" 错误原因
你在main方法里直接用了reader.nextLine(),但完全没创建Scanner实例并赋值给reader变量啊!编译器根本找不到这个未定义的符号,得先初始化Scanner才行。
2. 反转方法的逻辑bug
你的reverse方法里藏着两个致命问题:
while循环里的i变量从来没递增,会触发无限循环,程序直接卡死;- 每次都固定取
text.charAt(strlenght-1),也就是一直拿最后一个字符,根本没遍历整个字符串,自然没法实现反转。
修正后的完整代码
import java.util.Scanner; public class ReversingName { public static String reverse(String text) { int strLength = text.length(); String reversedStr = ""; // 从字符串最后一位往前遍历,逐个拼接字符 for (int i = strLength - 1; i >= 0; i--) { reversedStr += text.charAt(i); } return reversedStr; } public static void main(String[] args) { // 初始化Scanner实例,这是解决输入错误的核心 Scanner reader = new Scanner(System.in); System.out.print("Type in your text: "); String text = reader.nextLine(); System.out.println("In reverse order: " + reverse(text)); // 好习惯:用完Scanner记得关闭资源 reader.close(); } }
额外优化小技巧
如果想让代码更高效简洁,推荐用Java内置的StringBuilder优化反转逻辑,循环拼接字符串的效率其实不高:
public static String reverse(String text) { StringBuilder sb = new StringBuilder(text); return sb.reverse().toString(); }
一行代码就能搞定反转,这也是实际开发里常用的写法~
内容的提问来源于stack exchange,提问作者Vivek Singh
相关产品推荐
相关产品推荐

