从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
相关产品推荐
相关产品推荐

