You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:06:21