println的非静态替代品

Neo*_*nde 2 java static non-static

简单的问题是我可以使用其他函数而不是println,因为我想将非静态变量输出到文件usig out.println();

这是我的代码:

import java.io.*;

public class main {

String outputString ="Math.sqrt(25);" ;
static String outputPath ="src/output.txt";
/**
 * @param args
 */
public static void main(String[] args) throws IOException {
    File f;
    f= new File (outputPath);
        //file creation
        if(!f.exists()){
            f.createNewFile();
            System.out.println("File has been created");
        }else{
            f.delete();
            System.out.println("1. File has been deleted");
            f.createNewFile();
            System.out.println("2. File has been created");
        }
        //adding string(text) to file
        try{
            FileWriter outFile = new FileWriter(args[0]);
            PrintWriter out = new PrintWriter(outFile);

            out.println(outputString);
            out.close();

        }catch(IOException e){
                 e.printStackTrace();
            }
    }

}
Run Code Online (Sandbox Code Playgroud)

如果那不可能,也许还有另外一种方法可以绕过它.我的主要问题是我想在代码的和平中创建一个字符串.但这似乎很难做:)任何帮助:)

NPE*_*NPE 7

这个问题与此无关println().它与以下事实有关:非static,outputString与您的类的实例相关联,并且您的代码不会创建此类实例.

要么创建outputString静态,要么创建一个实例main:

public void doit(String[] args) throws IOException {
    ...
    PrintWriter out = ...;
    out.println(outputString);
    ...
}

public static void main(String[] args) throws IOException {
    new main().doit(args);
}
Run Code Online (Sandbox Code Playgroud)