Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Java histogram re-size and copying. Hello everybody, I am really struggling with some parts of a java lab that I am doing, and would love

Java histogram re-size and copying.

Hello everybody, I am really struggling with some parts of a java lab that I am doing, and would love if someone could point out where I am running imto trouble.

The instructions are as follows:

I need help writing this code for java class.

Starter file: Project3.java and input file: dictionary.txt

Project#3 is an extension of the concepts and tasks of Lab#3. You will again read the dictionary file and resize the array as needed to store the words. Project#3 will require you to update a frequency counter of word lengths every time a word is read from the dictionary into the wordList. When your program is finished this histogram array will contain the following: at index [1], the number words of length 1. At index [2] then number of words of length 2 . . . at histogram[n] the number of words of length n. Since there will be no words of length zero, there will be a zero in histogram[0].

The histogram is just a plain array of int that is initialized to length zero. Recall that Java allows us to define a new array with a length of zero. It happens every time you run a Java program with no commnd line arguments. Doing so initializes the args array to have length zero. Every time you read a word from the dictionary you cannot just execute an increment statment such as

 ++histogram[word.length()];  

This is the correct statement to execute, but you must first make sure the histogram is long enough to have a cell at that index. If your current word has length of 7, you must first make sure that your histogram array has a .length of at least 8 (not 7) because the [7] cell of the array is actually the eighth cell.

If you do need to upsize your histogram then only upsize it to be just big enough for that particular word. At the end of the program it is possible that you could have gaps in your histogram if (depending on the input file) there were no words of length twenty six. In this case there would still be a zero at the [26] cell in the array that was put there when the Java compiler initialized all the cells to zero.

My code up to this point is this:

* Project2.java Dynamic histogram */

import java.io.*;

import java.util.*;

public class Project2

{

static final int INITIAL_CAPACITY = 10;

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

{

// ALWAYS TEST FIRST TO VERIFY USER PUT REQUIRED INPUT FILE NAME ON THE COMMAND LINE

if (args.length < 1 )

{

System.out.println(" usage: C:\\> java Project2 "); // i.e. C:\> java Project2 dictionary.txt

System.exit(0);

}

int[] histogram = new int[0]; // histogram[i] == # of words of length n

/* array of String to store the words from the dictionary.

We use BufferedReader (not Scanner). With each word read in, examine it's length and update word length frequency histogram accordingly.

*/

String[] wordList = new String[INITIAL_CAPACITY];

int wordCount = 0;

BufferedReader infile = new BufferedReader( new FileReader(args[0]) );

while ( infile.ready() )

{

String word = infile.readLine();

// # # # # # DO NOT WRITE/MODIFY ANYTHING ABOVE THIS LINE # # # # #

if ( wordCount >= wordList.length )

wordList = upSizeArr( wordList );

wordList[wordCount++] = word;

if (word.length() >= (histogram.length + 1))

histogram[word.length()]++;

// test to see if list is full. If needed do an up size (just like Lab#3)

// now you may safely append word onto list and incr count

// look at the word length and see if the histogram length is AT LEAST

// word length + 1. If not, you must upsize histogram to be EXACTLY word length + 1

// now you can increment the counter in the histogram for this word's length

// # # # # # DO NOT WRITE/MODIFY ANYTHING BELOW THIS LINE # # # # #

//END WHILE INFILE READY

infile.close();

}

wordList = trimArr( wordList, wordCount );

System.out.println( "After final trim: wordList length: " + wordList.length + " wordCount: " + wordCount );

// PRINT WORD LENGTH FREQ HISTOGRAM

for ( int i = 0; i < histogram.length ; i++ )

System.out.format("words of length %2d %d ", i,histogram[i] );

} // END main

// YOU MUST CORRECTLY COPY THE STRING REFS FROM THE OLD ARR TO THE NEW ARR

static String[] upSizeArr( String[] fullArr )

{

String[] newArr=new String[fullArr.length*2];

for(int i =0;i< fullArr.length;++i){

newArr[i] = fullArr[i];

}

return newArr;

}

static String[] trimArr( String[] oldArr, int count )

{

String [] trimArr = new String[count];

for (int i = 0; i < trimArr.length; i++){

trimArr[i] = oldArr[i];

}

return trimArr;

}

// YOU MUST CORRECTLY COPY THE COUNTS FROM OLD HISTO TO NEW HISTO

static int[] upSizeHisto( int[] oldArr, int newLength )

{

int upSizeHisto[] = new int[newLength];

for (int i = 0; i

upSizeHisto[i] = oldArr[i];

}

return upSizeHisto; // just to make it complie you change as needed

}

} // END CLASS PROJECT#2

Any guidance on what aspects of my code are flawed would be greatly appritiated!

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored 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

Recommended Textbook for

Select Healthcare Classification Systems And Databases

Authors: Katherine S. Rowell, Ann Cutrell

1st Edition

0615909760, 978-0615909769

More Books

Students also viewed these Databases questions

Question

What is Change Control and how does it operate?

Answered: 1 week ago

Question

How do Data Requirements relate to Functional Requirements?

Answered: 1 week ago