Try declaring BF, BW and test inside the main method or declare them as
public static.
On 5/23/22 01:46, John Barrow wrote:
I am relatively new to Java, and get this occasionally myself due to
the "static main" method being typed within the class.
The issue is that you are trying to access "BF" and "str" that exist
inside a class, from a static environment (main). I think it would
have helped if the exception had been a little more explicit,
mentioning the fields that were at fault.
If you were accessing the class from another source file (class) you
would first have to create an instance, i.e.
Add2StrJOp myAdd2StrJOp = new Add2StrJOp();
Then you could access "BF" and "str" as
myAdd2StrJOp.BF and myAdd2StrJOp.str.
As the main method is a static method, it also needs to create an
instance of Add2StrJOp using "new" before you can access the fields
within the class, just as if using your class from an external source
file.
So add the line above at the top of your main method, just after the
"try {" line and then prefix the class fields with your newly created
instance variable to reference them.
Hope that helps.
John
On Sun, 22 May 2022, 23:53 Zulfi Khan, <zulfi6...@yahoo.com.invalid>
wrote:
Hi,
I have written the following code:
/*
* Click
nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt
to change this license
* Click
nbfs://nbhost/SystemFileSystem/Templates/Project/Maven2/JavaApp/src/main/java/${packagePath}/${mainClassName}.java
to edit this template
*/
package com.mycompany.add2strjop;
import javax.swing.*;
import java.lang.NumberFormatException;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.BufferedWriter;
import java.io.BufferedReader;
import java.io.IOException;
public class Add2StrJOp {
BufferedReader BF= null;
BufferedReader BW= null;
String str = "test";
public static void main(String args[]){
try{
FileReader file = new FileReader("abc.txt");
BF = new BufferedReader(file);//E
//BF= new BufferedReader(new FileReader("abc.txt"));
while ((str = BF.readLine())!=null){//E
JOptionPane.showMessageDialog(null, str);//E
//JOptionPane.showMessageDialog(null, "hello World");
//BF.clos()
}
}catch(IOException e){
e.printStackTrace();
}
finally{
try{
if( BF!=null){//E
BF.close();//E
}
}catch(IOException e) {
e.printStackTrace();
}
}//finally
try{
BW = new BufferedWriter(new FileWriter("abc.txt"));//E
String str= "This is a test";
BW.write(str);//E
BW.close();//E
}catch(IOException e) {
e.printStackTrace();
}
}
}
I have commented the lines as //E where I am getting the error
"Non-static variable cannot be referenced from static context.
Zulfi.