简单的问题是我可以使用其他函数而不是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();
}
}
}
如果这不可能,可能还有其他方法可以解决它。我的主要问题是我想在代码的和平中创建一个字符串。但这似乎很难做:)任何帮助:)
答案 0 :(得分: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);
}
答案 1 :(得分:2)
println
函数可以打印静态和非静态变量。问题是您尝试从静态上下文(您的outputString
方法)中访问非静态变量main
。
答案 2 :(得分:1)
println
是PrintStream
类的非静态方法。 System
,也是一个类,有一个名为out
的名为PrintStream
的静态成员,您可以通过System.out
调用来检索它。当java启动时,该成员被初始化。
请注意,这并不意味着除了Object
类型的常规PrintStream
之外的其他任何内容,只是它是一个可以从System静态方便地访问的单例。