Как конфертировать из FP в OOP - Анализ текста на Java - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть школьное задание, которое я написал как функциональную программу на Java, а не как объектно-ориентированное, но, посмотрев на требования задания, я теперь понимаю, что оно должно содержать различные методы.

Программа должна иметь возможность принимать любой текстовый файл с расширением (.txt) и анализировать его следующим образом:

Программа должна иметь возможность открывать любой текстовый файл, указанный пользователем, и анализировать частотусловесных галочек в тексте.Поскольку существует много разных видов словесных тиков (таких как «like», «uh», «um», «you know» и т. Д.), Программа должна спросить пользователя, какие тики нужно искать.Пользователь может ввести несколько тиков, разделенных запятыми - любые пробелы, введенные пользователем до или после каждого тика, должны игнорироваться.

Программа должна вывести:

общее количество тиков, найденных в тексте

  • плотность тиков (доля всех слов в тексте, которые являются тиками)
  • частота каждого из словесных тиков
  • процент, который представляет каждый тик из всего общего числа тиков

Вот мой рабочий код:

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

public class AssignTextAnalysis {

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

        double words = 0;
        int tickstotal = 0;
        System.out.println("Which file do you want to open?");
        // Initiate scanner to read files
        Scanner scnr = new Scanner(System.in);
        String file = scnr.nextLine();
        Scanner input = new Scanner(new File(".....Arbitrary path name....." + file));

        System.out.println("Which words do you want to search for?");
        String ticks = scnr.nextLine();
        ticks = ticks.toLowerCase();
        //So you can store the strings
        String[] array = ticks.split(",");
        int[] values = new int[array.length];

        // Use a for loop to add all the words into Values

        for (int z=0; z<array.length; z++){
            values[z] = 0;
        }

        //Use while loop to found out the amount of occurrences of the words
        while(input.hasNext()){
            String next = input.next();
            words++;
            for ( int y=0; y<array.length; y++){
                if ( next.toLowerCase().equals(array[y])){
                    values[y] +=1;
                }
            }
        }


        for ( Integer a : values){
            tickstotal +=a;
        }

         System.out.println("Total number of tics :"+ticks);
         double density = ((tickstotal/words)*100);
         System.out.printf("Density of tics (in percent): %.2f \n", density);

         System.out.println(".........Tick Breakdown.........");

        for (int z = 0; z<array.length; z++){
            System.out.println(array[z] + "\t/\t"+ values[z]+" occurences\t/\t"  + (values[z]*100/tickstotal) + "% of all tics");
        }
    }

}

Поскольку я новичок в Java, я не уверен, как преобразовать его в ООП, и был бы признателен за любую возможную помощь.Спасибо всем!

1 Ответ

0 голосов
/ 25 сентября 2019

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

  • readFile()
  • askTicks()
  • calculateDensity()

Попробуйтеподумать о том, какую другую функциональность вы могли бы извлечь.Кодирование всего в функции main() - лучший способ потерять полное значение вашего кода, как только вы захотите снова поработать над ним.Вам и другим намного проще узнать, какая часть кода делает что.

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

...