Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Java Program: The goal of this assignment is to practice string processing functions, and design a solution which distributes the functionalities among appropriate classes. Problem:

Java Program:

The goal of this assignment is to practice string processing functions, and design a solution which distributes the functionalities among appropriate classes.

Problem:

When you are given a text file, parse, tokenize, and further split the tokens into specified sized letter groups.

Example:

Input: Second Programming Assignment

Tokens: second programming assignment

Letter Groups (2) : "se" "ec" "co" "on" "nd" "pr" "ro" "og" "gr" "ra" "am" "mm" "mi" "in" "ng" "as" "ss" "si" "ig" "gn" "nm" "me" "en" "nt"

Letter Groups (3): "sec" "eco" "con" "ond" "pro" "rog" "ogr" "gra" "ram" "amm" "mmi" "min" "ing" "ass" "ssi" "sig" "ign" "gnm" "nme" "men" "ent"

After generating the letter groups, generate the histogram (frequency of occurrence) of the letter groups.

The name of the text file will be the first argument of your main function and letterGroupLen will be the second argument of your main function.

Parse the input text file

You will have 2 classes in your design. SentenceUtils and Histogram.

SentenceUtils class will tokenize and partition the tokens into letter groups

Histogram class using a HashMap data structure will count the number of occurrence of each letter group, and print the results when requested.

The solution is composed of 2 classes: a SentenceUtils Class to convert a string into letterGroups and also an Histogram class to do histogram processing. These 2 functionalities are independent of each other.

You need to implement body of the following 4 functions and also the main function:

private String[] getTokens(String line)

private void splitTokenstoLetterGroups(String[] tokens)

public void generateHistogram(ArrayList letterGroups)

public void printHistogram()

Please test your program using the input files : input1.txtimage text in transcribed and test.txtimage text in transcribed. We are going to test using some other files also.

SentenceUtils.javaimage text in transcribed

Template:

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Map;

/*

* To change this license header, choose License Headers in Project

Properties.

* To change this template file, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* Write your information

*/

class Histogram{

private HashMap mHistogram;

public Histogram(){

this.mHistogram = new HashMap();

}

/*

This function counts the number of occurence of each letter group

input: letter groups

output: histogram

example: input: ["an","an","or","or","or"]

output: [, ]

*/

public void generateHistogram(ArrayList letterGroups){

/*

You are going to implement body of this function

*/

}

/*

This function prints the histogram

input: histogram

output: histogram printed on the display

example: input: [, ]

output:

an: **

or: ***

*/

public void printHistogram(){

/*

You are going to implement body of this function

*/

}

}

public class SentenceUtils {

private ArrayList mLetterGroups;

private int mLetterGroupLen;

public SentenceUtils(int letterGroupLen){

this.mLetterGroups = new ArrayList();

this.mLetterGroupLen = letterGroupLen;

}

public void addWords(String line){

String[] tokens = this.getTokens(line);

this.splitTokenstoLetterGroups(tokens);

}

public ArrayList getLetterGroups(){

return (this.mLetterGroups);

}

/*

This function splits a string into array of strings separated by space

character

input: a string

output: array of words seperated by space character

example: input: "object oriented"

output: ["object", "oriented"]

*/

private String[] getTokens(String line){

/*

You are going to implement body of this function

*/

}

/*

This function splits the tokens into letter groups according to

this.mLetterGroupLen

input: array of tokens

output: letterGroups of size this.mLetterGroupLen appended to

this.mLetterGroups

example: input: "object" "oriented"

output: this.mLetterGroups (of size 4) = this.mLetterGroups +

["obje","bjec", "ject","orie", "rien", "ient", "ente","nted"]

*/

input file :

and and or or or or or or

Test file:

The Cat in the Hat By Dr. Seuss

The sun did not shine.

It was too wet to play.

So we sat in the house

All that cold, cold, wet day.

I sat there with Sally.

We sat there, we two.

And I said, How I wish We had something to do!

Too wet to go out

And too cold to play ball.

So we sat in the house.

We did nothing at all.

So all we could do was to Sit! Sit! Sit! Sit!

And we did not like it.

Not one little bit.

And then Something went BUMP!

How that bump made us jump!

We looked!

Then we saw him step in on the mat!

We looked!

And we saw him!

The Cat in the Hat!

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access with AI-Powered Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions