Question

I need help writing this code for java class. Starter file: Project3.java and input file: dictionary.txt...

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.

Here is the starting code.

/* Project3.java  Dynamic histogram */

import java.io.*;
import java.util.*;

public class Project3
{
        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("\nusage: C:\\> java Project3 \n\n"); // i.e. C:\> java Project3 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 # # # # #

                        // 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\n", 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 )
        {       
                return null; // just to make it complie you change as needed
        }
        static String[] trimArr( String[] oldArr, int count )
        {
                return null; // just to make it complie you change as needed
        }

        // YOU MUST CORRECTLY COPY THE COUNTS FROM OLD HISTO TO NEW HISTO
        static int[] upSizeHisto( int[] oldArr, int newLength )
        {
                return null; // just to make it complie you change as needed
        }
} // END CLASS PROJECT#3

If there is anything else you might need to write this, let me know and I will be sure to post it.

0 0
Add a comment Improve this question Transcribed image text
Answer #1


/* Project3.java Dynamic histogram */


import java.io.*;
import java.util.*;

public class Project3
{
static final int INITIAL_CAPACITY = 10;

public static void main(String[] args) throws Exception
{
if (args.length < 1 )
{
System.out.println("\nusage: C:\\> java Project3 \n\n"); // i.e. C:\> java Project3 dictionary.txt
System.exit(0);
}

int[] histogram = new int[0];

String[] wordList = new String[INITIAL_CAPACITY];
int wordCount = 0;
BufferedReader infile = new BufferedReader(new FileReader(args[0]));
while (infile.ready())
{
String word = infile.readLine();

// test to see if list is full. If needed do an up size
if (wordCount == wordList.length)
wordList = upSizeArr(wordList);
//now you may safely append word onto list and incr count
String nWord = infile.readLine();
wordList[wordCount++] = nWord;

// 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
int wordLength = word.length();
if (word.length() > histogram.length)
histogram = upSizeHisto(histogram, wordLength);

// now you can increment the counter in the histogram for this word's length
histogram[word.length()]++;

}
infile.close();

wordList = trimArr(wordList, wordCount);
System.out.println("After trim, wordList length: " + wordList.length);

for (int i = 0; i < histogram.length; i++)
System.out.println("words of length " + i + ": " + histogram[i]);

}


private static String[] upSizeArr(String[] fullArr)
{
int l = (fullArr.length)*2;
String[] array = new String[l];
for (int i = 0; i < fullArr.length; i++)
{
array[i] = fullArr[i];
}

return array;
}

private static String[] trimArr(String[] oldArr, int count) {
String[] array = new String[count];
for (int i = 0; i < array.length; i++)
{
array[i] = oldArr[i];
}

return array;
}

private static int[] upSizeHisto(int[] oldArr, int newLength) {
int array[] = new int[newLength];
for (int i = 0; i < oldArr.length; i++)
{
array[i] = oldArr[i];
}

return array;
}
}

Add a comment
Know the answer?
Add Answer to:
I need help writing this code for java class. Starter file: Project3.java and input file: dictionary.txt...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • I need help with my code when I run my code running the wrong thing like...

    I need help with my code when I run my code running the wrong thing like this After downSize() words.length=60003 wordCount=60003 vowelCount=206728 this is my code here import java.io.*; import java.util.*; public class Project02 {    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 )       ...

  • Execute your program like this: C:\> java Lab4 10000ints.txt 172822words.txt Be sure to put the ints...

    Execute your program like this: C:\> java Lab4 10000ints.txt 172822words.txt Be sure to put the ints filename before the words filename. The starter file will be expecting them in that order. Lab#4's main method is completely written. Do not modify main. Just fill in the methods. Main will load a large arrays of int, and then load a large array of Strings. As usual the read loops for each file will be calling a resize method as needed. Once the...

  • I need to write a program in java that reads a text file with a list...

    I need to write a program in java that reads a text file with a list of numbers and sorts them from least to greatest. This is the starter file. import java.util.*; import java.io.*; public class Lab3 { static final int INITIAL_CAPACITY = 5; public static void main( String args[] ) throws Exception { // ALWAYS TEST FOR REQUIRED INPUT FILE NAME ON THE COMMAND LINE if (args.length < 1 ) { System.out.println("\nusage: C:\\> java Lab3 L3input.txt\n"); System.exit(0); } //...

  • Trying to practice this assignment Argument list: the *yahoonews.txt Data file: yahoonews.txt Wr...

    Trying to practice this assignment Argument list: the *yahoonews.txt Data file: yahoonews.txt Write a program named WordCount.java, in this program, implement two static methods as specified below: public static int countWord(Sting word, String str) this method counts the number of occurrence of the word in the String (str) public static int countWord(String word, File file) This method counts the number of occurrence of the word in the file. Ignore case in the word. Possible punctuation and symbals in the file...

  • QUESTION The ReadFile class opens and reads a text file. The WriteFile class opens and writes...

    QUESTION The ReadFile class opens and reads a text file. The WriteFile class opens and writes to a file. Compile and run these programs. There are several ways to read/write text files. The examples shown here are just one way of achieving this. Look at the API for the BufferedReader class. The readline() method is a simple way to read the text file line by line. It returns null when the end of the file has been reached. https://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html Look...

  • I am given an input file, P1input.txt and I have to write code to find the...

    I am given an input file, P1input.txt and I have to write code to find the min and max, as well as prime and perfect numbers from the input file. P1input.txt contains a hundred integers. Why doesn't my code compile properly to show me all the numbers? It just stops and displays usage: C:\> java Project1 P1input.txt 1 30 import java.io.*; // BufferedReader import java.util.*; // Scanner to read from a text file public class Project1 {    public static...

  • Need to code the HeapSort Algorithm in java. Most of the code is already done just...

    Need to code the HeapSort Algorithm in java. Most of the code is already done just need to code the "heapify" part of the heapsort algorithm. My heapify code is in bold below called "sink", but when I run it it gives me 2 errors with the string compare part saying: WordCountHeap.java:61: error: cannot find symbol         if(l < k && String.Compare(pq[l], pq[n]) < 0)                           ^ symbol:   method Compare(String,String) location: class String Please fix the code and the "heapify"...

  • I need help with my Java code. A user enters a sentence and the program will...

    I need help with my Java code. A user enters a sentence and the program will tell you what words were duplicated and how many times. If the same word is in the sentence twice, but one is capitalized, it will not count it as a duplicate. How can I make the program read the same word as the same word, even if one is capitalized and the other is not? For example, "the" and "The" should be counted as...

  • I'm trying to make a recursive binary search that checks whether or not the words in...

    I'm trying to make a recursive binary search that checks whether or not the words in a file are correct by comparing it to a dictionary file, but for some reason the method I'm using below is not working and is outputting all the words in the file I am checking as incorrect. (the dictionary is organized in alphabetical order however the file "oliver.txt" is not) my question is what do I have to do to make this work? public...

  • I have to make a java code that takes jumbled words from an input file called...

    I have to make a java code that takes jumbled words from an input file called jumbles.txt and sorts them in alpabetical order 1. Expect the user must to put a filename on the command line like this: C:\>java Lab4 jumbles.txt 2. Use that args[0] value as the name of the input file and open it with a BufferedReader 3. Load every line/word of that input file (one word per line) into an ArrayList of String 4. Sort that ArrayList...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT