2

簡単な質問は、非静的変数をファイルusig out.println();に出力したいので、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()。これは、非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

printlnPrintStreamクラスの非静的メソッドです。、これもクラスであり、呼び出しを介して取得できるタイプSystemの静的メンバーがあります。このメンバーは、Javaの起動時に初期化されます。outPrintStreamSystem.out

Objectこれは、これが通常のタイプ以外のものであることを意味するものではなく、PrintStreamSystemから静的に便利にアクセスできるシングルトンであることに注意してください。

于 2012-12-18T20:52:58.990 に答える