3

Javaで配列リストを配列に変換するのに少し問題があります。

applicants文字列を取る配列リストを含む Table というクラスがあります。関数を使用toArray()すると、配列リストが配列に変換されないようです。

listArray() 関数を実行するとエラーが発生するため、これを知っています。

java.lang.NullPointerException.

これがコードです。どんな助けでも大歓迎です。

public class Table {
    public ArrayList<String> applicants;
    public String appArray[];

    public Table() {
        applicants = new ArrayList<String>();
    }

    public void addApplicant(String app) {
        applicants.add(app);
    }

    public void toArray() {
        int x = applicants.size();
        String[] appArray = new String[x];
        appArray = applicants.toArray(appArray);
    }

    public void list() {
        for (int i = 0; i < applicants.size(); i++) {
            System.out.println(applicants.get(i));
        }
    }

    public void listArray() {
        for (int i = appArray.length; i > 0; i--) {
            System.out.println(appArray[i]);
        }
    }
}
4

3 に答える 3

16

これは、appArrayここでメソッドのフィールドをシャドーイングしているためです。

 int x = applicants.size();
 String[] appArray = new String[x];
 appArray = applicants.toArray(appArray);

クラスですでに宣言しappArrayたフィールドを使用する必要があるときに呼び出される新しいローカル変数を作成します。appArray

やったほうがいい

public void toArray()
{
    appArray = applicants.toArray(new String[0]);
}
于 2013-02-19T20:19:51.227 に答える
1

ArrayList と Array の両方に文字列のみが含まれている必要があるため、これを行うことができます。

appArray = applicants.toArray(new String[0]);

詳細については、javadocを参照してください。

于 2014-03-14T07:53:01.863 に答える
1
appArray = new String[applicants.size()];
int index = 0;
for(String app:applicants){
    appArray [index] = app;
    index++;
}
于 2013-02-19T20:37:37.667 に答える