2015-07-01 2 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" 

Этот код будет подсчитывать количество строк, которые соответствуют «STRINGTOCOUNT» до тех пор, пока не найдет строку, которая соответствует «STRINGTOFIND» или файлы не имеют более не-читать строки (LINENUM будет содержать номер строки, на которой этот произошло).

+0

Спасибо, это сработало, я не знаю, почему я не мог думать об этом. –

+0

@BerkayYigit Добро пожаловать! – SamTebbs33

Смежные вопросы