We're a community of 1077K IT Pros here for help, advice, solutions, professional growth and fun. Join us!
1,076,379 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Start New Discussion Reply to this Discussion

problem in accessing variables and methods in Java

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

3
Contributors
8
Replies
2 Hours
Discussion Span
1 Year Ago
Last Updated
9
Views
Question
Answered
begueradj
Junior Poster in Training
70 posts since Mar 2007
Reputation Points: 9
Solved Threads: 0
Skill Endorsements: 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

Aviras
Junior Poster in Training
87 posts since Jul 2008
Reputation Points: 24
Solved Threads: 8
Skill Endorsements: 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

begueradj
Junior Poster in Training
70 posts since Mar 2007
Reputation Points: 9
Solved Threads: 0
Skill Endorsements: 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

begueradj
Junior Poster in Training
70 posts since Mar 2007
Reputation Points: 9
Solved Threads: 0
Skill Endorsements: 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?

Aviras
Junior Poster in Training
87 posts since Jul 2008
Reputation Points: 24
Solved Threads: 8
Skill Endorsements: 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();
         
   }
begueradj
Junior Poster in Training
70 posts since Mar 2007
Reputation Points: 9
Solved Threads: 0
Skill Endorsements: 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.)

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.

JamesCherrill
... trying to help
Moderator
8,527 posts since Apr 2008
Reputation Points: 2,583
Solved Threads: 1,456
Skill Endorsements: 30

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

begueradj
Junior Poster in Training
70 posts since Mar 2007
Reputation Points: 9
Solved Threads: 0
Skill Endorsements: 0

de rien.
J

JamesCherrill
... trying to help
Moderator
8,527 posts since Apr 2008
Reputation Points: 2,583
Solved Threads: 1,456
Skill Endorsements: 30
Question Answered as of 1 Year Ago by JamesCherrill and Aviras

This question has already been solved: Start a new discussion instead

Post: Markdown Syntax: Formatting Help
 
You
View similar articles that have also been tagged:
 
© 2013 DaniWeb® LLC
Page rendered in 0.0886 seconds using 2.76MB