We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

reading files and init and main

jimboy
jimboy asked
on
Medium Priority
278 Views
Last Modified: 2010-03-30
I have set up an applet which has arrays that are initialised at the start of it however I want to change it to an application s.t. I can read in data from the files, so I included a main statement.. do I put all the data from the init into the body of the main, as when I run it the main is never dealt with...also I wish the data to be read from files into 2-d arrays of type double of unknown size do I use a data input stream...I'm stuck....Any help is most appreciated...TA ALAN (I feel stupid,Ireland)
Comment
Watch Question

Commented:
kindly break up the question into small chunks, please?
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION

Author

Commented:
The file is in ascii format unfortunately..what to do???

Commented:
Well, that will depend on the form of the data. At the simple end of the scale you use the readLine() method of the DataInput, which will give a line of the file in a string. Assuming that contains a single number you then call Integer.parseInt(String l) (or some appropriate equivalent from Float or Double or whatever) and it will hand you the number.

On the other end of the scale you can attach a StreamTokenizer to the inputstream then call its nextToken method, and as long as it reports that the next token is a number (TT_NUMBER) you can find it in nval (I think).

Check up on the docs for whichever one you think you need. If you still have questions, I will need more detail on the form of the input file.

Author

Commented:
public void readfile() throws IOException
    try {
      fin=new FileInputStream(new File ("C:/WINDOWS/Desktop/Aljava/Project2/airp.dat"));
   }
    catch (FileNotFoundException e){
//****print an error if the file is not available****//
    text[1].setText("File not found");
    return;
  }
   dat = new StreamTokenizer(new FileReader ("C:/WINDOWS/Desktop/Aljava/Project2/airp.dat"));
      while(dat.nextToken()!=dat.TT_EOF) {
            airparr = dat.nextToken();
      }
}
imladris this is my code for this example, every time i run it the value returned is 3 even tough the value I wish is 23.47...I'm lost, I think I need a holiday your help is most appreciated as although it doesn't look like it I think the solution is close at hand! Help me please...airparr is a double value, it will eventually be an array but if I could just get one value being read in properly I would be YEAH happy.


TA

Commented:
Your almost there. I believe you are in fact getting a negative three returned from nextToken, which is the constant it uses to indicate that the token it found was a number (StreamTokenizer.TT_NUMBER). To get the actual number you can access the instance variable nval. So you get

while(dat.nextToken()!=dat.TT_EOF){
if(dat.nextToken()==dat.TT_NUMBER)airparr=dat.nval;
}


Author

Commented:
imladris I AM NOT WORTHY.......

Author

Commented:
while(dat.nextToken()!=dat.TT_EOF){
                  if(dat.nextToken()==dat.TT_NUMBER)
                        airparr=dat.nval;             
            }
imladris i'm back I don't know what is going wrong now I get a value of 4.0 for airparr my file is saved as a w.p 6.1 file with only 1 value in it.....peeved with JAVA

Author

Commented:
it's 3.0 again......ooh!

Commented:
W.P 6.1 file? Do you mean a wordperfect file? If so, I wouldn't
use that. Word processors stick all kinds of gnarly stuff in
their files, about fonts and sizes and headers and footers etc.
etc. etc.

Use notepad, or some other simpleminded editor.

Author

Commented:
when i use notepad it reads it in as 0.0????????????Are you as peeved with this as I am? Ta for all your help AGAIN

Author

Commented:
One final question if you don't mind and i'll be out of your hair for ever (phew i hear you sigh)....if there are other values in the file eg -#b how do i get my function to skip these values???????

Commented:
Should magically happen, since anything with characters in it will return with a token type of TT_WORD, and so the if in the loop will fail and airpar will not be assigned.

W.r.t. the values you're getting, perhaps the next thing to do is check what Java is seeing, to make sure that you and Java agree on its contents. Make a small file, and output it to the console with a small loop like:

DataInputStream di=new DataInputStream(new
FileInputStream(filename));
String line;
boolean done=false;
do
{  try
   {   line=di.readLine();
       System.out.println(line);
   } catch(IOException e)
   {   done=true;
   }
} while(!done);

This will allow you to see what Java thinks is in the file.

Let me know what you find.

Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.