См. этот ответ для более эффективного решения.
Это очень уродливое решение, но вы можете создать класс-оболочку вокруг Scanner
, который содержит два внутренних Scanner
объекта,Вы можете получить peek()
функциональность, имея второй сканер впереди другого
Это очень простое решение (просто чтобы дать вам представление о том, о чем я говорю), и оно не реализует всечто вам нужно (но вам нужно будет реализовать только те части, которые вы будете использовать).(также, это не проверено, поэтому возьмите это с зерном соли).
import java.util.Scanner;
public class PeekableScanner
{
private Scanner scan1;
private Scanner scan2;
private String next;
public PeekableScanner( String source )
{
scan1 = new Scanner(source);
scan2 = new Scanner(source);
next = scan2.next();
}
public boolean hasNext()
{
return scan1.hasNext();
}
public String next()
{
next = (scan2.hasNext() ? scan2.next() : null);
return scan1.next();
}
public String peek()
{
return next;
}
}