2015-07-18 1 views
-2

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

Введите слово из текста: Эрика

Слово Эрик хранится 5 раз в текстовом файле.

Мой код ниже уже читает текстовый файл, но я застрял в методе wordCount. Я не знаю, с чего начать.

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.HashMap; 
import java.util.HashSet; 
import java.util.Map; 
import java.util.Random; 
import java.util.Scanner; 
import java.util.Set; 
public class WordSet { 

    private static Scanner file; 
    private static ArrayList<String> words = new ArrayList<String>(); 
    //private static Map<String, Integer> occurences = new HashMap<String, Integer>(); 
    //private static Set<String> uniqueWords = new HashSet<String>(words); 
    //private static int tWords = 0; 
    //private static int uWords = 0; 

    //private static String [] word1 = new String[10]; 
    //private static String [] word2 = new String[10]; 

    public static void openFile() throws IOException { 

     try { 
      file = new Scanner(new File("words.txt")); 

     } catch (FileNotFoundException e) { 
      System.out.println("File Not Found"); 
      e.printStackTrace(); 
     } catch (Exception e) { 
      System.out.println("IOException"); 
     } 
    } 

    public static String wordCount() throws IOException { 

     Random r = new Random(); 

     while(file.hasNext()) { 
      words.add(file.next()); 
      } 

     String wordCount = words.get(r.nextInt(words.size())); 

     return wordCount; 

    } 

    public static void main(String[] args) throws IOException { 

     System.out.println("Enter a word from the text: "); 
     openFile(); 

     Scanner scan = new Scanner(System.in); 

     String pickWord = wordCount(); 
     while(scan.hasNext()) { 
      String input = scan.nextLine(); 

      if(input.equals(pickWord)) { 
       System.out.println(pickWord); 
      } 
     } 
     scan.close(); 
    } 
} 
+0

У вашего файла есть одно слово в строке? – Shar1er80

+0

да это делает @ Shar1er80 – Alphanum3ric

ответ

0

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

0

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

public static void main(String[] args) throws IOException { 
    System.out.println("Enter a word from the text: "); 
    openFile(); 
    Scanner scan = new Scanner(System.in); 
    String inputStr = scan.next(); 
    Collections.frequency(words, inputStr); 
    String pickWord = wordCount(); 
    System.out.println("You have entered '" + inputStr 
      + "' frequency in text file is :" 
      + Collections.frequency(words, inputStr)); 
    /* 
    * while(scan.hasNext()) { String input = scan.nextLine(); 
    * 
    * if(input.equals(pickWord)) { System.out.println(pickWord); } } 
    */ 
    scan.close(); 
} 

Bu с помощью Collections.frequency() и можно легко считать с меньшим количеством кода ... :)

+0

Спасибо за вашу помощь ... Я попробую это @Joywish – Alphanum3ric

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