我已经尝试这样做大约一个小时左右,但只能编写出只能计数或只能搜索的代码。我的目标是组合一些东西,不仅会查找特定字符串(我们称之为“STRINGTOFIND”),而且还会计算另一个特定字符串(我们称之为“STRINGTOCOUNT”)的实例,直到找到“STRINGTOFIND”。
这是我的计算方法:
int count = 0;
Scanner scanner = new Scanner("example.xml");
while (scanner.hasNextLine()) {
String nextToken = scanner.next();
if (nextToken.equalsIgnoreCase("STRINGTOCOUNT"))
count++;
}
这是我找到的方法(我想找到它的线):
int lineN = 1; //set to 1 for the loop to return correct line number
Scanner scanner = new Scanner("example.xml");
while (scanner.hasNextLine()) {
lineNum++;
if("STRINGTOFIND".equals(scanner.nextLine().trim())) {
System.out.println("found on line: "+lineNum);
}
}
我想过寻找 STRINGTOFIND,获取它的行号,并使第一个扫描仪只计算 STRINGTOCOUNT 直到该行,但遗憾的是我的编程技能还不够。所以我的问题是,由于我已经有了代码来执行我想做的事情中的一件,我该如何组合这些?
最佳答案
您只需在循环中使用两个 if 语句。
boolean foundString = false;
int count = 0, lineNum = 1;
while(scanner.hasNextLine()){
String line = scanner.nextLine();
if(line.equals("STRINGTOFIND")){
foundString = true;
break; // Break out of the loop
}
else if(line.equals("STRINGTOCOUNT")) count++;
lineNum++;
}
// Code that uses "foundString" and/or "lineNum"
此代码将计算与“STRINGTOCOUNT”匹配的行数,直到找到与“STRINGTOFIND”匹配的行或文件不再有未读取的行(lineNum 将包含发生此情况的行号)。
关于java - 计算字符串 x 的实例数,直到找到字符串 y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31173043/