2015-07-01 41 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