3

スターター用の文字列の形式で整数1からnを持つベクトルを初期化しようとしています。

これは私のベクトルの宣言です。

 Vector<String> candidatesSet,frequentItemSet,mFCandidatesSet,mFSet = new <String>Vector();

初期化に使用するループは

for(int i=0; i<crows; i++)
        {
           candidatesSet.add(Integer.toString(i+1));
        }

ここでは、実行時の変数crowsduringの値を取得します。

しかし、オブジェクトに文字列を追加している行にNullpointerExceptionがスローされています。

ベクトルをnullに初期化してみました

 candidatesSet = null;

しかし、それは機能しませんでした

4

2 に答える 2

2

まず第一に、次のようなものが間違っています。

Vector<String> set = new <String>Vector();

正しい構文は次のとおりです。

Vector<String> set = new Vector<String>();

第二に、あなたがこのようなことをするなら:

Vector<String> set1,set2,set3,set4,set5 = new Vector<String>();

...のみset5初期化されます。各変数は個別に初期化する必要があります。あなたはこのようなことをすることができます:

Vector<String> set1,set2,set3,set4,set5;
set1 = set2 = set3 = set4 = set5 = new Vector<String>();

...しかし、すべての変数が同じを指し、Vector1つの変数を変更すると他のすべての変数に影響します。各変数を個別に初期化する必要があります。

第三に、これを行う:

candidatesSet = null;

...candidatesSetとにかく非プリミティブインスタンス変数がnullに初期化されるため、まだ初期化されていない場合は何もしません。それがあなたの問題です、あなたは.add(String)nullオブジェクトを呼び出していますNullPointerException

これらの問題を修正するとコードは機能しますが、最後に1つ問題があります。Vectorやや時代遅れのクラスであり、JavaコレクションAPIに置き換えられました。ArrayListの代わりにVector、次のように使用してみてください。

List<String> candidatesSet = new ArrayList<String>();

これにより、コードがより効率的になり、古風なものになります。

于 2012-06-13T00:34:02.587 に答える
2

で試してみてください

Vector<String> candidatesSet = new Vector<String>();

要素を追加する前に

于 2012-06-13T00:26:32.467 に答える