1

我目前有一个 If 语句,用于检查文档中的下一个单词是否等于某个长度。在它返回 true 后,我希望它将该单词添加到数组或字符串等中。我的问题是一旦我使用 next() 命令,即使我在如果声明。我对 Java 有点陌生,所以我希望这个简单的点击是有意义的。

Scanner in1 = new Scanner(inputFile);
String inputString;

while(in1.hasNextLine()){
     if(in1.next().length() == 6){
          inputString = in1.next();
     }
}

基本上我有一个文件,其中包含多个单词,多行所有不同的长度。我想抓住其中有 6 个字符的单词。实际的 while 循环和文件更复杂,问题是它在评估 If 语句后跳转到下一个单词。因此,如果它检测到下一个单词有 6 个字符,它会将紧随其后的下一个单词加载到变量中。欢迎任何帮助或建议!

4

2 回答 2

2

将 的值捕获next()到变量中,进行比较,设置inputString为该变量。如果长度不正确,接下来的任何内容都可以使用相同的变量,避免额外的next(). 不确定这是否符合您的需要。

于 2012-05-13T21:44:46.530 回答
2

您可以将此循环分成两部分:

  1. 获取下一个令牌并存储它,并且
  2. 使用该缓存的令牌。

例如:

while(in1.hasNextLine()) {
     String current = in1.next();
     if(current.length() == 6) {
          inputString = current;
     }
}

这是使用迭代器或扫描器时的标准技术,原因正是您所指出的 - 该next()方法不能在不产生不同值的情况下多次调用。

顺便说一句,其他编程语言已经设计了它们的迭代器,以便获取被迭代的值并推进到下一个位置是单独的步骤。值得注意的是,C++ STL 认为这些是不同的操作。

希望这可以帮助!

于 2012-05-13T21:45:14.703 回答