gpt4 book ai didi

java - 使用扫描仪读取单个字符,而无需将其从扫描仪中删除

转载 作者:行者123 更新时间:2023-12-01 11:07:29 25 4
gpt4 key购买 nike

我正在编写一个解析器,我需要从输入中获取一个字符,然后根据该字符的值更改控制流,我知道我可以做这样的事情 input.next( ).charAt(0),但是如果我不仅这样做这个字符,而且整个下一个字符串都会从扫描仪中消失,这不是我想要的,所以有没有办法检查 的值下一个字符而不将其从扫描仪中取出?

最佳答案

首先,逐个字符地处理,你会想做这样的事情:

scanner.useDelimiter("");

此后,scanner.next() 将逐字符读取。

您无法将数据放回到扫描仪中。但是您可以将扫描仪包装在自定义类中,以创建将东西放回原处的错觉。例如:

class PeekableScanner {

private final Scanner scanner;
private String next;

public PeekableScanner(Scanner scanner) {
this.scanner = scanner;
this.next = scanner.hasNext() ? scanner.next() : null;
}

public boolean hasNext() {
return next != null;
}

public String next() {
String current = next;
next = scanner.hasNext() ? scanner.next() : null;
return current;
}

public String peek() {
return next;
}
}

使用示例:

Scanner scanner = new Scanner("hello");
scanner.useDelimiter("");
PeekableScanner peekable = new PeekableScanner(scanner);

while (peekable.hasNext()) {
System.out.println(peekable.peek());
System.out.println(peekable.next());
}

这会将每个字符打印两次。

关于java - 使用扫描仪读取单个字符,而无需将其从扫描仪中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32796416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com