2

简单的问题是我可以使用其他函数来代替 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();
            }
    }

}

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

4

3 回答 3

7

问题与println(). 这与以下事实有关,即 non-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);
}
于 2012-12-18T20:23:41.047 回答
2

println函数可以打印静态和非静态变量。问题是您试图outputString从静态上下文(您的main方法)中访问非静态变量。

于 2012-12-18T20:28:01.567 回答
1

println是类的非静态方法PrintStream。,也是一个类,有一个名为类型System的静态成员,您可以通过调用检索该成员。该成员在 java 启动时被初始化。outPrintStreamSystem.out

请注意,这绝不意味着这不是Objecttype的常规,PrintStream只是它是一个单例,可以方便地从 System.

于 2012-12-18T20:52:58.990 回答