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
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
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
JamesCherrill
... trying to help
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