944,222 Members | Top Members by Rank

Ad:
  • Java Discussion Thread
  • Unsolved
  • Views: 467
  • Java RSS
Nov 7th, 2009
0

Help with Code

Expand Post »
Hello,

I am an online student in an intro to Java programming course and am a little stuck on my current program. The program is supposed to prompt for the name of files until the user enters "stop" to quit and includes the following methods in addition to the main method:

1. countLines(), which takes a File object, and returns the number of lines of text in the file

2. countLettersInLines(), which takes a File object, and returns an array of integers. In this array of integers, the first entry is the number of letters in the first line of the file, the second entry is the number of letters in the second line of the file, etc.

3. countLetters(), which takes a File object, and returns the number of letters in the file

4. countOneLetter() takes a File object and a letter, and returns the number of occurrences of the specified letter in the file (in uppercase or lowercase). This method and countLetters() can be used to determine the frequency of each letter in a text file.

5. countAllLetters() takes a File object, and returns an array of 26 integers, such that the entries in the array contain the number of occurrences of each letter of the alphabet in the file, disregarding case. The first entry in the array will be the number of a's in the file (regardless of case), the second entry is the number of b's (regardless of case), and so on. This method should use countOneLetter().

6. countIntegers() takes a File object, and returns the number of integers in the file

An example to this program would be:
Please enter the file name, or "stop" to end: short.txt

Number of lines: 2
Line with maximum number of letters: 1
Line 1: 13 letters
Line 2: 5 letters

Number of letters: 18
Frequency of a: 5.555555555555555
Frequency of b: 0.0
Frequency of c: 0.0
Frequency of d: 0.0
Frequency of e: 16.666666666666668
Frequency of f: 0.0
Frequency of g: 0.0
Frequency of h: 5.555555555555555
Frequency of i: 11.11111111111111
Frequency of j: 0.0
Frequency of k: 0.0
Frequency of l: 16.666666666666668
Frequency of m: 11.11111111111111
Frequency of n: 5.555555555555555
Frequency of o: 5.555555555555555
Frequency of q: 0.0
Frequency of r: 0.0
Frequency of s: 11.11111111111111
Frequency of t: 0.0
Frequency of u: 0.0
Frequency of v: 5.555555555555555
Frequency of w: 0.0
Frequency of x: 0.0
Frequency of y: 5.555555555555555
Frequency of z: 0.0

Integers in the file: 2

Please enter the file name, or "stop" to end: stop


Thank you any help will be much appreciated.
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
hedwards09 is offline Offline
6 posts
since Nov 2009
Nov 7th, 2009
0
Re: Help with Code
Sorry hedwards09, we can only give homework help to those that make an attempt first. Can you post what you have so far with the specific problems you are having? If you haven't started coding yet, what ideas do you have so far? We may be able to guide you if you show that you have made a start.
Reputation Points: 395
Solved Threads: 192
Veteran Poster
darkagn is offline Offline
1,136 posts
since Aug 2007
Nov 7th, 2009
0
Re: Help with Code
That's fine. Well let's start with the main method...I know it must contain a scanner object and a System.out.print that prompts the user for file names until it is asked to quit by typing "stop". Then there must be a sentinel loop created am I correct? And inside the sentinel loop it must contain the methods listed in the first post(countLines(), countLetters(), etc.)? So this is what I have so far:

public static void main(String[] args)
{
Scanner input = new Scanner(System.in);

String fName;

System.out.print("Enter file name or stop to quit");
fName = input.nextLine();

while (fName != "stop")
{
//Methods entered here
}
}
Reputation Points: 10
Solved Threads: 0
Newbie Poster
hedwards09 is offline Offline
6 posts
since Nov 2009
Nov 7th, 2009
0
Re: Help with Code
Yes, that looks good to me. So let's look at what you need to do for your countOneLetter method. The method signature will look like this:
java Syntax (Toggle Plain Text)
  1. public int countOneLetter(File inputFile, char searchLetter)
You can get this from the description given to you:
countOneLetter() takes a File object and a letter, and returns the number of occurrences of the specified letter in the file (in uppercase or lowercase).
If you look at what I've done with the method signature, I have said that we will return an int (you can't have fractions of occurrences) and we require the file and the letter that we are searching for.

Ok, so how to structure the method? First we need to set up a variable to store the number of times the letter occurs in the file. Let's call it count and we start at 0 because we haven't found any occurrences yet. So add the following line to your method, right at the start:
java Syntax (Toggle Plain Text)
  1. int count = 0;
Next we need to check whether the char that was passed in is a letter, and whether it is upper or lower case. The Character.isLetter(), Character.isUpperCase() and Character.isLowerCase() methods will help you here. If it's not a letter, you can either throw an exception or return your count of 0. If it is a letter, and it's lower case, we need to work out what it's upper case letter is before we search the file. Similarly, if we have an upper case letter we need to work out its lower case equivalent. I'll leave this up to you to figure out. Finally, we search each charater in the File object and see if it is either the lower case or upper case version of the char. If it is increment the count, if not do nothing. Right at the end of the method, return the count.

Now that I've explained that method, the others are very similar. Your main method will need to call each method in turn and print out the results, using System.out.println.

I hope this has helped you see how to design it, have a try at coding the method I have described and the others, feel free to re-post if you have any more trouble. Good luck and happy programming
Reputation Points: 395
Solved Threads: 192
Veteran Poster
darkagn is offline Offline
1,136 posts
since Aug 2007
Nov 9th, 2009
1
Re: Help with Code
I'm relatively new to Java, but I have about 3 years of C++ experience.

Rather than

Java Syntax (Toggle Plain Text)
  1. fName != "stop"

it should be

Java Syntax (Toggle Plain Text)
  1. !fname.equalsIgnoreCase("stop")

equalsIgnoreCase is used just in case the user capitalizes one, or all of the letters.
Last edited by brownjohn; Nov 9th, 2009 at 7:15 pm.
Reputation Points: 13
Solved Threads: 1
Newbie Poster
brownjohn is offline Offline
8 posts
since Nov 2009

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in Java Forum Timeline: How do I add my game to my website?
Next Thread in Java Forum Timeline: problem with character space (character search)





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC