【问题标题】:non-static replacement for printlnprintln 的非静态替换
【发布时间】:2012-12-18 20:20:32
【问题描述】:

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

}

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

【问题讨论】:

  • 您当然可以使用 System.out.println 打印静态和非静态变量。你想做什么但不起作用?
  • @jahroy.. 鉴于他没有在静态方法中执行此操作。这是困扰 OP 的问题。
  • 提示:当编译器输出错误信息而您不理解时:复制错误信息,然后用 Google 搜索:您会发现很多关于它的含义以及如何解决问题的解释代码。
  • 如果你能澄清这个问题会有所帮助。很难说出要问的是什么。

标签: java static non-static


【解决方案1】:

问题与println()无关。这与以下事实有关,即非staticoutputString 与您的类的 instance 相关联,并且您的代码不会创建此类实例。

要么将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);
}

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      请注意,这绝不意味着这不是PrintStream 类型的常规Object,只是它是一个可以方便地从系统静态访问的单例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-08
        • 1970-01-01
        • 2019-06-27
        • 1970-01-01
        相关资源
        最近更新 更多