I have a file with one floating point number per line which I have to
read into an array. I wrote a piece of code using the String Tokenizer
but it tries to tokenize the file name itself instead of the file
contents. I'm VERY new to this so please don't make fun :-P Please help
or at least point in the right direction. Thank you.
------------------------------------------------------------------------
import java.io.*;
import java.util.*;
import javax.swing.JOptionPane;
public class FileReader
{
/* Main Method */
public static void main(String[] args)
{
FileReader input = null;
// Promt the user for file name
String fileName = JOptionPane.showInputDialog(null,
"Enter the file name:",
"File Name Prompt",
JOptionPane.QUESTION_MESSAGE);
// Create a file object
File file = new File(fileName);
try
{
// Create an input stream
input = new FileReader(fileName);
int code;
// Repeatedly read a character and display it on the console
while((code = input.read()) != -1)
System.out.print((char)code);
}
catch (FileNotFoundException ex)
{
System.out.println("File " + fileName + " does not exist.\n");
}
catch (IOException ex)
{
ex.printStackTrace();
}
finally
{
try
{
// Close the file
input.close();
}
catch(IOException ex)
{
ex.printStackTrace();
}
}
// Tokenizer doesn't work because it's reading the file name string
// instead of the file contents.
StringTokenizer tokenizer = new StringTokenizer(fileName, "\n");
System.out.println("The total number of tokens is " +
tokenizer.countTokens());
while (tokenizer.hasMoreTokens())
{
System.out.println(tokenizer.nextToken());
}
}
}
------------------------------------------------------------------------
juergen - 05 Sep 2006 14:19 GMT
Your open a stream,
> // Create an input stream
> input = new FileReader(fileName);
but you feed the Tokenizer with the 'fileName'
> StringTokenizer tokenizer = new StringTokenizer(fileName, "\n");
You need to read the file, store it in a char-Array und feed the
Tokenizer
with this array.
You can also use
class StreamTokenizer,
and feed it with input-stream
Juergen
Chris Uppal - 05 Sep 2006 16:13 GMT
> You need to read the file, store it in a char-Array und feed the
> Tokenizer
> with this array.
> You can also use
> class StreamTokenizer,
> and feed it with input-stream
Nice layout. Makes it read sort of like a haiku...
;-)
-- chris
Patricia Shanahan - 05 Sep 2006 14:28 GMT
> I have a file with one floating point number per line which I have to
> read into an array. I wrote a piece of code using the String Tokenizer
> but it tries to tokenize the file name itself instead of the file
> contents. I'm VERY new to this so please don't make fun :-P Please help
> or at least point in the right direction. Thank you.
Given one floating point number per line, any tokenizer is overkill. Use
a BufferedReader's getLine method and Double's parseDouble.
Patricia
Arne Vajhøj - 05 Sep 2006 16:32 GMT
>> I have a file with one floating point number per line which I have to
>> read into an array. I wrote a piece of code using the String Tokenizer
[quoted text clipped - 4 lines]
> Given one floating point number per line, any tokenizer is overkill. Use
> a BufferedReader's getLine method and Double's parseDouble.
That is how I would do it too.
But if one are using 1.5, then Scanner and nextDouble are
probably the "correct" way.
Arne