Как я могу прочитать это Условие и посчитать мивалы? - PullRequest
0 голосов
/ 16 февраля 2010

У меня есть динамический большой файл, и я хочу проверить логическое значение, а затем, если оно истинно, получить количество вещей

пожалуйста, помогите мне

например, это мой файл (возможно, он содержит 20000 строк)

.
.
.
fsfds fdsfsdf gfhgfh value1=true fdsfd fdfdsr ewref

dfdfsd dsfds  dfdf fdsfsd 
dfdfsd dsfds myval dfdf fdsfsd 
dfdfsd dsfds dfdf fdsfsd 
dfdfsd dsfds myval dfdf fdsfsd 

fdfdfddsfds
fdfdsfdfdsfdfdsfsdfdsfdsfdsfds
.
.
.

Я написал этот код для его обработки, но не могу, потому что в этом случае я читаю Line by Line и я должен проверить, если value1 истинно, то в 2 строке после того, как я должен считать myval ...

public void countMethod() {
        int i = 0; //count
        try {
            BufferedReader input =
                    new BufferedReader(new FileReader(new File("I:\\1.txt")));
            String line;
            while ((line = input.readLine()) != null) {
                if (line.substring(line.indexOf("value1")).split("=")[1].equals("true")) {
                    if (line.indexOf("myval") != -1)
                        i++;
                }
            }
            input.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("Count is : " + i);
    }

Как я могу проверить условие и после этого, если оно истинно, я считаю мивалы?

Большое спасибо

Ответы [ 2 ]

1 голос
/ 16 февраля 2010

Если вы хотите сделать только один проход по файлу, просто осмотрите каждую строку и проверьте как ее счет myval, так и наличие value1 = true. Вы будете знать, что такое счет myval, но вам не нужно будет сообщать об этом, если value1 не верно.

0 голосов
/ 16 февраля 2010

Попробуйте:

boolean found = false;
while ((line = input.readLine()) != null) {
  if (!found)
    found=line.substring(line.indexOf("value1")).split("=")[1].equals("true");
  if (found && line.indexOf("myval") != -1)
    i++;
}
...