2015-07-01 44 views
1

我一直在尝试这样做大约一个小时左右,但只管理代码的东西,只能计数或只能搜索。我的目标是将不仅查找特定字符串(让我们称之为“STRINGTOFIND”)的东西放在一起,而且还计算另一个特定字符串(我们称之为“STRINGTOCOUNT”)字符串的实例,直到找到“STRINGTOFIND”为止。计算字符串x的实例,直到找到字符串y

我是这样算:

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直到该行,但我的编程技能是不够的,可悲的。所以我的问题是,因为我已经有了代码来做只有一个我想做的事情,我该如何结合这些?

回答

1

您只需在循环中使用两个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" 

,直到它找到一个匹配“STRINGTOFIND”线或将文件不再有未读行此代码将计数匹配“STRINGTOCOUNT”是行数(LINENUM将包含行号此发生)。

+0

感谢它的工作,我不知道为什么我不能想到这一点。 –

+0

@BerkayYigit不客气! – SamTebbs33