1.11M Members

problem in accessing variables and methods in Java

 
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

 
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

 
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

 
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

 
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?

 
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();
         
   }
 
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.

 
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

 
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: