1

文字列をファイルに出力しようとしています。何を間違えたのですか?常に NullPointException が発生しますか? 例外が何かをキャッチするか、引数が必要であると信じており、入力しません。しかしここで?

メイン関数を含むこのコードを書きました。

編集:下から2行目にエラーが発生していますsome.items[0]="Testing One!";

import java.io.*;



public class StringPrinter {
            public String[] items;
            public File file;
            public StringPrinter(String fileName){
                    file = new File(fileName);}


            public void toFile(){
                    try{
                        PrintWriter pw = new PrintWriter(new FileWriter(file, false));
                            for (String st:items){ 
                                    pw.println(st);
                            }
                    }
                    catch(Exception exception){}
            }



    public static void main(String args[]){

        StringPrinter some=new StringPrinter("Workyou.txt");




        some.items[0]="Testing One!";
        some.items[1]="Testing Two!";

        some.toFile();


    }
}
4

6 に答える 6

5

ここで例外が発生しているようです

some.items[0]="Testing One!";

これは、初期化していないためです

public String[] items;

コンストラクターで次のように初期化します

public StringPrinter(String fileName){
         file = new File(fileName);
         items = new String[SIZE];
}
于 2012-10-25T05:39:33.920 に答える
3

first : 前述のとおり、配列を初期化する必要があります。2 番目: データをファイルに出力しない理由 解決策: メソッド ToFile() で、string[] 値を出力する for ループの後に、Printer Writer を閉じる必要があります。

               PrintWriter pw = new PrintWriter(new FileWriter(file, false));
               for (String st:items){ 
                          pw.println(st);
               }
               **pw.close()**

データをファイルに出力します。

于 2012-10-25T06:56:13.070 に答える
2

文字列Testing One!を設定しようとしています。配列の最初の位置に移動しましたが、itemsその文字列配列を初期化しませんでした

some.items[0]="Testing One!";

この行を変更した場合。

public String[] items;

これに

public String[] items = new String[2];

その後、それは動作します。配列のサイズを事前定義する必要があることに注意してください。配列のサイズが固定されていることに注意してください。配列のサイズを固定したくない場合は、サイズを拡張できるラッパー クラスを使用することをお勧めします。 ArrayList

import java.io.*;
import java.util.ArrayList;

public class StringPrinter {

    public ArrayList<String> items = new ArrayList<String>();
    public File file;

    public StringPrinter(String filename) {
        file = new File(filename);
    }

    public void toFile() {
        try {
            PrintWriter pw = new PrintWriter(new FileWriter(file, false));
            for (String st : items) { 
                pw.println(st);
            }
            pw.close();
        }
        catch(Exception exception) { }
    }

    public static void main(String args[]) {
        StringPrinter some = new StringPrinter("Workyou.txt");
        some.items.add("Testing One!");
        some.items.add("Testing Two!");
        some.toFile();
    }
}
于 2012-10-25T05:46:05.773 に答える
0

これを試してみてください、これはファイルにテキストを印刷するはずです

public class StringPrinter {
        public String[] items = new String [2];
        public File file;
        public StringPrinter(String fileName){
                file = new File(fileName);}


        public void toFile(){
                try{
                    PrintWriter pw = new PrintWriter(new FileWriter(file, false));
                    for (String st:items){ 
                        pw.print(st);
                         pw.flush();

                      }

                }
                catch(Exception exception){}
        }



public static void main(String args[]){

    StringPrinter some=new StringPrinter("Workyou.txt");

    some.items[0]="Testing One!";
    some.items[1]="Testing Two!";

    some.toFile();


}

}

フラッシュのドキュメント。ファイル内のコンテンツを表示するためにライターを強制的に閉じる必要はありません。ライターにフラッシュを呼び出すだけで、コンテンツがファイルに追加されます。

于 2012-10-25T06:00:01.873 に答える
0

項目配列は初期化されていません。実際にいくつかの値を割り当てる前に、初期化する必要があります。固定サイズの従来の配列を作成したくない場合は、ArrayList を使用してみてください。

于 2012-10-25T05:50:04.890 に答える
0

これを試してください、完全に解決されたコード:

import java.io.*;

パブリック クラス StringPrinter {

 public String[] items;
public File file;

public StringPrinter(String filename) {
    file = new File(filename);
}

public void toFile() {
    try {
        PrintWriter pw = new PrintWriter(new FileWriter(file, false));
        for (String st : items){ 
            pw.println(st);
        }
pw.close();       //needed to close the writer stream to write data in file
    }
    catch(Exception exception) {}
}

public static void main(String args[]) {
    StringPrinter some = new StringPrinter("Workyou.txt");
some.items = new String[2];        //needed to initialize array with size
    some.items[0]="Testing One!";
    some.items[1]="Testing Two!";
    some.toFile();
}

}

于 2012-10-25T06:22:13.210 に答える