我目前有一个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个字符,它会将后面的单词加载到变量中。欢迎任何帮助或建议!
答案 0 :(得分:2)
将next()
的值捕获到变量中,进行比较,将inputString
设置为该变量。如果长度不正确,接下来的任何内容都可以使用相同的变量,从而避免额外的next()
。不确定这是否符合您的需要。
答案 1 :(得分:2)
您可以将此循环拆分为两部分:
例如:
while(in1.hasNextLine()) {
String current = in1.next();
if(current.length() == 6) {
inputString = current;
}
}
这是使用迭代器或扫描仪时的标准技术,正是您所注意到的原因 - next()
方法无法多次调用而不会生成不同的值。
顺便说一句,其他编程语言已经设计了它们的迭代器,以便获得迭代的值并前进到下一个位置是单独的步骤。值得注意的是,C ++ STL认为这些是不同的操作。
希望这有帮助!