2012-06-16 2 views
0

Я пытаюсь выяснить, как я буду читать файл, а затем подсчитать количество раз, когда появится определенная строка.Подсчитайте количество строк, появляющихся в файле

Это то, что мой файл выглядит, это .txt:

Test 
    Test 
    Test 
    Test 

Я хочу, чтобы метод потом вернуться, сколько раз он находится в файле. Любая идея о том, как я могу это сделать? Мне в первую очередь нужна помощь с первой частью. Поэтому, если бы я искал строку «Тест», я бы хотел, чтобы она вернулась. 4.

Спасибо! Надеюсь, я дал достаточно информации!

+4

Что вы сделали до сих пор? это выглядит как домашнее задание –

+0

Все, что я сделал, это получить мою программу, чтобы взять строку (имя игрока) и записывать ее в файл на новой строке каждый раз. Это не домашнее задание, это система предупреждения/запрета для моей игры – Zomby

ответ

0

Здесь вы:

public int countStringInFile(String stringToLookFor, String fileName){ 
    int count = 0; 
    try{ 
    FileInputStream fstream = new FileInputStream(fileName); 
    DataInputStream in = new DataInputStream(fstream); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
    String strLine; 
    while ((strLine = br.readLine()) != null) { 
     int startIndex = strLine.indexOf(stringToLookFor); 
     while (startIndex != -1) { 
     count++; 
     startIndex = base.indexOf(stringToLookFor, 
            startIndex +stringToLookFor.length()); 
     } 
    } 
    in.close(); 
    }catch (Exception e){//Catch exception if any 
    System.err.println("Error: " + e.getMessage()); 
    } 
    return count; 
} 

Использование: int count = countStringInFile("SomeWordToLookFor", "FileName");

+0

Ваше предположение, что строка происходит только один раз в строке. –

+0

Работал отлично, спасибо вам большое. Я все еще очень новичок во всем этом файле. – Zomby

+0

@JohnD Это правда, я обновил свой код сейчас – GETah

0

Добавьте этот метод в свой класс, передайте ему FileInputStream и он должен вернуть количество слов в файл. Имейте в виду, это чувствительно к регистру.

public int countWord(String word, FileInputStream fis) { 
BufferedReader in = new BufferedReader(new InputStreamReader(fis)); 
String readLine = ""; 
int count = 0; 
while((readLine = in.readLine()) != null) { 
String words = readLine.split(" "); 
for(String s : words) { 
if(s.equals(word)) count++; 
} 
return count; 
} 

Только что написал это сейчас, и оно не проверено, поэтому дайте мне знать, если это сработает. Кроме того, убедитесь, что вы понимаете, что я сделал, если это вопрос домашней работы.

0

Если вы попали в точку чтения каждого файла в строку, я хотел бы предложить, глядя на раскол метода строк.

Дайте ему строковый код «Test», и он вернет массив строки типа - подсчитайте количество элементов в строке. Суммируйте их, чтобы получить общее количество событий.

import java.io.*; 

public class StringCount { 
    public static void main(String args[]) throws Exception{ 

     String testString = "Test"; 
     String filePath = "Test.txt"; 
     String strLine; 
     int numRead=0; 

     try { 
      FileInputStream fstream = new FileInputStream(filePath); 
      DataInputStream in = new DataInputStream(fstream); 
      BufferedReader br = new BufferedReader(new InputStreamReader(in)); 

      while ((strLine = br.readLine()) != null) { 
       strLine = strLine + " "; 
       String [] strArry = strLine.split(testString); 

       if (strArry.length > 1) { 
        numRead = numRead + strArry.length - 1; 
       } 
       else { 
        if (strLine == testString) { 
         numRead++; 
        } 
       } 
      } 

      in.close(); 

      System.out.println(testString + " was found " + numRead + " times."); 

     }catch (Exception e){ 
     } 
    } 
} 
+0

Это возвращалось только 1 раз. Когда «Тест» был написан 6 раз. Любая идея почему? – Zomby

+0

Можете ли вы предоставить тестовый файл? Все тесты, с которыми я столкнулся, вернулись правильно, поэтому задайтесь вопросом, какой случай использования я пропустил. –

0

Я хотел бы сделать это:

  1. открыть и прочитать файл построчно,
  2. проверить, как часто строка содержит данное слово ...
  3. увеличить глобальный счетчик что ..

public static void main(String[] args) throws IOException { 
    BufferedReader in = new BufferedReader(new FileReader("Test.txt")); 
    Scanner sc = new Scanner(System.in); 
    System.out.print("Enter the subtring to look for: "); 
    String word = sc.next(); 
    String line = in.readLine(); 
    int count = 0; 
    do { 
    count += (line.length() - line.replace(word, "").length())/word.length(); 
    line = in.readLine(); 
    } while (line != null); 
    System.out.print("There are " + count + " occurrences of " + word + " in "); 
} 

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

  • Нет связанных вопросов^_^