gpt4 book ai didi

java - 记住扫描仪中的位置

转载 作者:行者123 更新时间:2023-11-30 08:59:50 25 4
gpt4 key购买 nike

这是一个解释我遇到的问题的简单示例:

public static String nextTwoTokens(Scanner scan) {
String partOne = scan.next();
String partTwo = scan.next();
return partOne+partTwo;
}

这应该工作得很好,除了我不想用我的两个 .next() 修改扫描仪中“光标”的位置。

根据我的阅读,您无法复制 Scanner 对象。在那种情况下,我如何“记住”光标在 Scanner 中的位置,然后在返回此方法之前返回到该位置?

如果我做不到,有没有办法获取扫描器正在读取的源代码,以便构建另一个扫描器?在这种情况下,如果我需要创建另一个扫描仪,新扫描仪最好从文件/输入流/任何内容的开头开始,而不是旧扫描仪的光标所在的位置。

最佳答案

Scanner 类实际上并没有实现 Cloneable 接口(interface)。您可以通过实现 Cloneable 接口(interface)来制作自定义 .clone() 方法,但在这种情况下,克隆不是一个好主意。

要回答您的问题,不,您不能这样做。你需要找到更好的方法。

另一种方法是使用方便的 .split(delimiter) 方法创建 String[]!所以,你可以这样做:

String s = "This is a test.";
String[] tokens = s.split(" "); //split the string into tokens, cutting at the spaces
for(String token : tokens) {
System.out.println(token);
}

这应该打印出来

This
is
a
test.

这样你就可以通过 String[] 循环获取下一个标记,然后返回到你之前的位置。

为了回答您在评论中提出的问题,如果您想做一些事情而不是真正没有 split 方法的 String,我建议您这样做:

Scanner scan = new Scanner(INITIALIZE ME HOWEVER YOU WANT);
ArrayList<String> tokens = new ArrayList<String>();
while(scan.hasNext()) {
tokens.add(scan.next());
}

基本上,只需读取所有内容并从中创建一组永久的、可导航的 token 。

这是我能给的最好的建议。这可能不是最有效的方法,但它肯定是一种可靠的方法。

关于java - 记住扫描仪中的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27085050/

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