944,147 Members | Top Members by Rank

Ad:
  • Java Discussion Thread
  • Unsolved
  • Views: 3032
  • Java RSS
Mar 17th, 2005
0

Help...How do i use the Tokenizer?

Expand Post »
this is my first Java course and i am having troubles doing one of the assignments... well i am suppose to read a file containing grades of students...here is an example

034-23-8901 45 78 85 34
342-67-1231 98 45 67 45
452-57-2351 49 78 61 52

the first 9 digits are the social security of the student and the other numbers are the grades. well i am suppose to open this file ( it is name Grades.txt) somehow i am suppose to read the grades and find the average if the student has an average of 90 or above he will be excluded from the final and then my program has to write an outFile named Exemption.txt... it seems very easy but i just can't get it to work...

My question is do i have to use the tokenizer to separate the numbers... if it is possible how can i do it?

Please i will appreciate any help...
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
mackverick is offline Offline
5 posts
since Mar 2005
Mar 17th, 2005
0

Re: Help...How do i use the Tokenizer?

Quote originally posted by mackverick ...
this is my first Java course and i am having troubles doing one of the assignments... well i am suppose to read a file containing grades of students...here is an example

034-23-8901 45 78 85 34
342-67-1231 98 45 67 45
452-57-2351 49 78 61 52

the first 9 digits are the social security of the student and the other numbers are the grades. well i am suppose to open this file ( it is name Grades.txt) somehow i am suppose to read the grades and find the average if the student has an average of 90 or above he will be excluded from the final and then my program has to write an outFile named Exemption.txt... it seems very easy but i just can't get it to work...

My question is do i have to use the tokenizer to separate the numbers... if it is possible how can i do it?

Please i will appreciate any help...
Hi,
well there are couple of ways you can do this. String Tokenizer is simplest for parsing. Once you have read the file using io API , read the line into a String buffer. Apply StringTokenizer to extract SSN and the grades.
Average out the grades and write the SSN on Exemptions if the avergae is less.

Hope this helps you. In case you need more help mail me.

cheers,
aj.wh.ca
Reputation Points: 12
Solved Threads: 1
Junior Poster in Training
aj.wh.ca is offline Offline
53 posts
since Mar 2005
Mar 18th, 2005
0

Re: Help...How do i use the Tokenizer?

Better use String.split() instead of StringTokenizer. It will give you an array of Strings split on whatever you give it to use as a field separator.
As your data structure is pretty static you can then use that array and average all the data in it (while skipping the first of course) after converting the Strings to numbers.

See the API docs for details about String.split()
Team Colleague
Reputation Points: 1658
Solved Threads: 331
duckman
jwenting is offline Offline
7,719 posts
since Nov 2004
Mar 18th, 2005
0

Re: Help...How do i use the Tokenizer?

jwenting, thanks man i was looking for a better (and easier) way to do it and thanks to you i found it...

I was having troubles using the tokens, every time i was using the separators of ...(line, "-") to take apart the SSN it didn't only take the SSN number but it was taking the whole line... it was kind of frustrating...

i will try using the string.split() right away...

P.S. were are the API docs for details about String.split()? are they located in this forum? ( i'll take a look using google...)
Reputation Points: 10
Solved Threads: 0
Newbie Poster
mackverick is offline Offline
5 posts
since Mar 2005
Mar 18th, 2005
0

Re: Help...How do i use the Tokenizer?

they're located at http://java.sun.com where you can either view them online or download them to install on your computer.
You can also get the JDK there and loads of other goodies (like tutorials, online books, etc.).
Team Colleague
Reputation Points: 1658
Solved Threads: 331
duckman
jwenting is offline Offline
7,719 posts
since Nov 2004
Mar 19th, 2005
0

Re: Help...How do i use the Tokenizer?

ok i have been trying to use the string.split() and so far i can't do it...( keep getting this error messages...) well i have found 2 ways that i think i can do it:

1) This one i found it on my book but it only uses a preditermine string i can't find how to make it read from my grades.txt file:

double avg;
double[] numbers = {87, 90, 88, 80, 90};

double total = 0;
for (int i = 0; i < numbers.length; i++)
total += numbers[i];
avg = total/numbers.length;
System.out.println(total);
System.out.println(avg);
**With this code i get the average which is something good, but how can i change the code so i can read the numbers from my file??**

2) In this one i use a substring but again i don't have an example in how to change the code so i can read it from my Grades.txt file:

String fullnumber = "234-23-1234 56 67 45 90";
String social = fullnumber.substring(0, 10);
String grades = fullnumber.substring(12, 23);
System.out.println(grades);
System.out.println(social);

** i can combine Code (1) with code (2) to get the program i am looking for but my problem is that i haven't found how to make read from the file**

3) this is the code i got so far but i can only read the social number... i can't read the rest of the number or even find the average...:

String line, fileIn = "Grades.txt", fileOut = "Exempt.txt";
StringTokenizer tokens;
String social;
String scores;
double average;

FileReader fr = new FileReader(fileIn);
BufferedReader inFile = new BufferedReader (fr);

FileWriter fw = new FileWriter (fileOut);
BufferedWriter bw = new BufferedWriter (fw);
PrintWriter outFile = new PrintWriter (bw);

line = inFile.readLine();
while (line != null)
{
tokens = new StringTokenizer (line);
social = null;

if (tokens.hasMoreTokens())
social = tokens.nextToken(",");
System.out.println(social);

line = inFile.readLine();
}
inFile.close();

Can anyone tell me what i am doing wrong or even how can i read a file using Code (1) or Code (2)???

P.S. i will keep looking for more information in java.sun and also on the internet but i will appreciate any hint...

*** Is it possible using a Two-Dimensional Array???***
Reputation Points: 10
Solved Threads: 0
Newbie Poster
mackverick is offline Offline
5 posts
since Mar 2005
Mar 19th, 2005
0

Re: Help...How do i use the Tokenizer?

Quote originally posted by mackverick ...
ok i have been trying to use the string.split() and so far i can't do it...( keep getting this error messages...) well i have found 2 ways that i think i can do it:

1) This one i found it on my book but it only uses a preditermine string i can't find how to make it read from my grades.txt file:

double avg;
double[] numbers = {87, 90, 88, 80, 90};

double total = 0;
for (int i = 0; i < numbers.length; i++)
total += numbers[i];
avg = total/numbers.length;
System.out.println(total);
System.out.println(avg);
**With this code i get the average which is something good, but how can i change the code so i can read the numbers from my file??**

2) In this one i use a substring but again i don't have an example in how to change the code so i can read it from my Grades.txt file:

String fullnumber = "234-23-1234 56 67 45 90";
String social = fullnumber.substring(0, 10);
String grades = fullnumber.substring(12, 23);
System.out.println(grades);
System.out.println(social);

** i can combine Code (1) with code (2) to get the program i am looking for but my problem is that i haven't found how to make read from the file**

3) this is the code i got so far but i can only read the social number... i can't read the rest of the number or even find the average...:

String line, fileIn = "Grades.txt", fileOut = "Exempt.txt";
StringTokenizer tokens;
String social;
String scores;
double average;

FileReader fr = new FileReader(fileIn);
BufferedReader inFile = new BufferedReader (fr);

FileWriter fw = new FileWriter (fileOut);
BufferedWriter bw = new BufferedWriter (fw);
PrintWriter outFile = new PrintWriter (bw);

line = inFile.readLine();
while (line != null)
{
tokens = new StringTokenizer (line);
social = null;

if (tokens.hasMoreTokens())
social = tokens.nextToken(",");
System.out.println(social);

line = inFile.readLine();
}
inFile.close();

Can anyone tell me what i am doing wrong or even how can i read a file using Code (1) or Code (2)???

P.S. i will keep looking for more information in java.sun and also on the internet but i will appreciate any hint...

*** Is it possible using a Two-Dimensional Array???***

Hi,

here is the partial program for you. This one reads from the file and prints the average. Now you can simple check the average and write the file.

import java.io.*;
import java.util.*;
public class Main
{

String line, fileIn = "Grades.txt", fileOut = "Exempt.txt";
StringTokenizer tokens;
String social;
String scores;
double average;

public void calculate()
{
try
{
FileReader fr = new FileReader(fileIn);
BufferedReader inFile = new BufferedReader (fr);

FileWriter fw = new FileWriter (fileOut);
BufferedWriter bw = new BufferedWriter (fw);
PrintWriter outFile = new PrintWriter (bw);

line = inFile.readLine();
while (line != null)
{
tokens = new StringTokenizer (line);
social = null;

if (tokens.hasMoreTokens()) social = tokens.nextToken();
else {System.out.println("File Data error");System.exit(1);}
average = 0 ;
for(int i=1;i<5;++i)
{
if (tokens.hasMoreTokens()) scores = tokens.nextToken();
else {System.out.println("File Data error");System.exit(1);}
average += Integer.parseInt(scores);
}
average /= 4;
System.out.println(average);

line = inFile.readLine();
}
inFile.close();
}catch(IOException e){System.out.println("IO exception");System.exit(1);}
}
public static void main(String args[])
{
new Main().calculate();

}
}

if you still face any issues lemme know.
cheers,
aj.wh.ca
Reputation Points: 12
Solved Threads: 1
Junior Poster in Training
aj.wh.ca is offline Offline
53 posts
since Mar 2005
Mar 19th, 2005
0

Re: Help...How do i use the Tokenizer?

Thanks man, i just have one last question:

I can't create the "Exempt.txt" file, i have been using my notes and the book and it should be something like this:

for(int i=1;i<5;++i)
{
if (tokens.hasMoreTokens()) scores = tokens.nextToken();
else {System.out.println("File Data error");System.exit(1);}
average += Integer.parseInt(scores);
}
average /= 4;
if (average > 90)
System.out.println(average);

outFile.print(social + " ");
outFile.print(average + " ");

line = inFile.readLine();

According to my book it should go above the last "line = inFile.readLine();"
it does create the file but is empty, am i doing something wrong??
Reputation Points: 10
Solved Threads: 0
Newbie Poster
mackverick is offline Offline
5 posts
since Mar 2005

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: Encryption -- Custom algorithm
Next Thread in Java Forum Timeline: Shopping cart class





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


Follow us on Twitter


© 2011 DaniWeb® LLC