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

从Buffer读取整数时提取字符的语言解释器实现问题

语言解释器的整数与字符读取实现问题

我正在开发一款语言解释器,需要实现两个核心功能:

  • 从System.in读取整数
  • 从System.in读取单个字符

输入输出示例

示例输入1:

123 C
456
DEF

期望输出:123、C、456、D、E、F

补充示例输入:

123 456

期望输出:123、4、56

当前实现问题

现有代码存在两种错误表现:

  • 仅能读取到123、C、456、D,无法继续读取后续行的剩余字符
  • 读取结果为123、C、456、E、F,跳过了行首的字符

当前代码(Java)

class Variable extends Var {
    private static Scanner scanner = new Scanner(System.in);
    private static String buffer = ""; // 存储未处理的字符
    private static int bufferIndex = 0; // 标记缓冲区中下一个待读取字符的位置
    private String name;

    public Variable(String name) {
        this.name = name;
    }

    public String getName(HashMap<String, Integer> values) {
        return name;
    }

    public int evaluate(HashMap<String, Integer> values) {
        if (name.equals("read")) {
            return scanner.nextInt();
        }
        if (name.equals("get")) {
            // 缓冲区为空或已读完时,重新读取一行填充缓冲区
            while (bufferIndex >= buffer.length()) {
                    buffer = scanner.nextLine();
                    bufferIndex = 0; // 重置缓冲区索引
            }
            // 返回缓冲区中下一个字符的ASCII值
            return (int) buffer.charAt(bufferIndex++);
        }
        return values.getOrDefault(name, 0);
    }
}

内容的提问来源于stack exchange,提问作者NumberBasher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:12:14