1,105,331 Community Members

problem in accessing variables and methods in Java

Member Avatar
begueradj
Junior Poster in Training
93 posts since Mar 2007
Reputation Points: -1 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Hello people,

I designed this class:

package aiproject;
/*
 * This class has the task to read the data stored in a file called "fichier.txt"
 * line by line.
 * The read lines will be put inside a List called lignesDeMonfichier
 * Also, this class counts the number of lines that my file contains
 * */

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class ReadMyFile{
	
	protected List<String>lignesDeMonFichier=new ArrayList<String>();
	protected int nombreDeLignesDeMonFichier;
	private int n=0;
	
	/*
	 * reads my file line by line
	 * */
	public void lireFichier(){
		try{
			/*
			 * the file to be read must be named "fichier.txt"
			 * */
			FileInputStream fistream=new FileInputStream("fichier.txt");
			DataInputStream in=new DataInputStream(fistream);
			BufferedReader br=new BufferedReader(new InputStreamReader(in));
			String strLine;
			while((strLine=br.readLine())!=null){
				lignesDeMonFichier.add(strLine);
				n++;
			}
			n=nombreDeLignesDeMonFichier;
		}catch(Exception e){
			System.out.println("Error: "+e.getMessage());
		}
	}
	
	/*
	 * return the number of lines being read in my file
	 * */
	public int getNumberOfLinesInMyFile(){
		return nombreDeLignesDeMonFichier;
	}
	/*
	 * return the list of string lines being read in my file
	 * */
	public List<String> getLinesOfMyFile(){
		return lignesDeMonFichier;
	}
}

Then I designed this class from which I called the method lireFichier() of the former class:

package aiproject;
/*
 * This class stores after conversion the data stored in the file that has been
 * read by ReadMyFile class into a 2 dimensional array of integers
 * */
public class StoreFileDataIntoIntegerMatrix{
	ReadMyFile readF=new ReadMyFile();
	readF.lireFichier();		
	
}

But it shows me this error with eclipse that concerns the line: readF.lireFichier():
Syntax error on token "lireFichier", Identifier expected after this token

Can you explain me what is this error and how to fix it please ?

Regards

Member Avatar
Aviras
Junior Poster in Training
86 posts since Jul 2008
Reputation Points: 5 [?]
Q&As Helped to Solve: 8 [?]
Skill Endorsements: 0 [?]
 
1
 

Methods can only be called from within other methods, not in the class declaration like you did. Every method is called from within another method, starting with the main(String[] args) method.

Also, I noticed you putting n=nombreDeLignesDeMonFichier, while it should actually be the other way around. You haven't initialised nombreDeLignesDeMonFichier, so now n will be zero instead of your number of lines to be n.

x=y is not the same as y=x in Java.

Good luck

Member Avatar
begueradj
Junior Poster in Training
93 posts since Mar 2007
Reputation Points: -1 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Methods can only be called from within other methods, not in the class declaration like you did. Every method is called from within another method, starting with the main(String[] args) method.

Also, I noticed you putting n=nombreDeLignesDeMonFichier, while it should actually be the other way around. You haven't initialised nombreDeLignesDeMonFichier, so now n will be zero instead of your number of lines to be n.

x=y is not the same as y=x in Java.

Good luck

Thank you very much for your help

Yes, you are right about n=nombreDeLignesDeMonFichier

But if calling a method is only right when calling it from an other method then why when I do as follow it does not show me any error ?:

package aiproject;
      /*   
       * This class stores after conversion the data stored in the file that has been
         * read by ReadMyFile class into a 2 dimensional array of integers
          * */
   
      public class StoreFileDataIntoIntegerMatrix{
      ReadMyFile readF=new ReadMyFile();
      int b=   readF.lireFichier();
         
   }

Regards

Member Avatar
begueradj
Junior Poster in Training
93 posts since Mar 2007
Reputation Points: -1 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

Methods can only be called from within other methods, not in the class declaration like you did. Every method is called from within another method, starting with the main(String[] args) method.

Also, I noticed you putting n=nombreDeLignesDeMonFichier, while it should actually be the other way around. You haven't initialised nombreDeLignesDeMonFichier, so now n will be zero instead of your number of lines to be n.

x=y is not the same as y=x in Java.

Good luck

Sorry, I meant calling like this at the same point as above within the same class:

int b getNumberOfLinesInMyFile();

It does not show any error

Member Avatar
Aviras
Junior Poster in Training
86 posts since Jul 2008
Reputation Points: 5 [?]
Q&As Helped to Solve: 8 [?]
Skill Endorsements: 0 [?]
 
0
 

I believe now that is because you're doing an initialisation, and I don't know what you mean with your last post. Where did you put that code, or is it just the definition of your method?

Member Avatar
begueradj
Junior Poster in Training
93 posts since Mar 2007
Reputation Points: -1 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

I believe now that is because you're doing an initialisation, and I don't know what you mean with your last post. Where did you put that code, or is it just the definition of your method?

Thank you again.
I meant when I called the method not inside a method area as follows it did not show a problem: why ?

package aiproject;
      /*   
       * This class stores after conversion the data stored in the file that has been
         * read by ReadMyFile class into a 2 dimensional array of integers
          * */
   
      public class StoreFileDataIntoIntegerMatrix{
      ReadMyFile readF=new ReadMyFile();
      int b=   readF.getNumberOfLinesInMyFile();
         
   }
Member Avatar
JamesCherrill
... trying to help
10,362 posts since Apr 2008
Reputation Points: 2,081 [?]
Q&As Helped to Solve: 1,749 [?]
Skill Endorsements: 47 [?]
Moderator
Featured
 
1
 

When you define a variable you can initialise it with a single expression that returns a suitable value. You already know about int a = 99; or maybe int secondsPerYear = 365*24*60*60; so this is just a slightly more complex example int b = readF.getNumberOfLinesInMyFile(); What you cannot have is an initialisation expression outside a variable declaration.

(To be exact - there are also things called instance initialisers, but you don't need to worry about those now.)

ps: You don't need your lignesDeMonFichier variable because ArrayLists have a size() method that gives you the number you need. By calculating it yourself you just do more work, and create the possibility of getting it wrong sometime.

Member Avatar
begueradj
Junior Poster in Training
93 posts since Mar 2007
Reputation Points: -1 [?]
Q&As Helped to Solve: 0 [?]
Skill Endorsements: 0 [?]
 
0
 

When you define a variable you can initialise it with a single expression that returns a suitable value. You already know about int a = 99; or maybe int secondsPerYear = 365*24*60*60; so this is just a slightly more complex example int b = readF.getNumberOfLinesInMyFile(); What you cannot have is an initialisation expression outside a variable declaration.


(To be exact - there are also things called instance initialisers, but you don't need to worry about those now.)

Thank you very much for your help. You explained me very well. Thank you a lot.
Yours

Member Avatar
JamesCherrill
... trying to help
10,362 posts since Apr 2008
Reputation Points: 2,081 [?]
Q&As Helped to Solve: 1,749 [?]
Skill Endorsements: 47 [?]
Moderator
Featured
 
0
 

de rien.
J

Question Answered as of 2 Years Ago by JamesCherrill and Aviras
You
This question has already been solved: Start a new discussion instead
Post:
Start New Discussion
View similar articles that have also been tagged: