-2

ねえ、Java に問題があります (ショッカー (皮肉))。私は文字列の配列を持っています。私がやりたいことは、配列を反復処理し、各文字列を使用して新しいオブジェクトを作成することです。これは合法ですか?

String[] arrayOfNames = String[3];
goGetNamesToFillTheArray();
for(i = 0; i < arrayOfNames.length; i++) {
     Person arrayOfNames[i] = new Person();
}

私がそれを行うことが違法である場合、どうすればそのようなことをすることができますか?

明確にするために、タイプ person のいくつかのオブジェクトが必要です。配列にエントリ jon と sally が含まれている場合、プログラムの後半で jon.doSomething() と sally.doSomething() を使用できます。

4

4 に答える 4

3

Person の配列を作成し、それらに名前を入力するとします。

String[] arrayOfNames = new String[3];
goGetNamesToFillTheArray();
Person[] arrOfPerson = new Person[arrayOfNames.length];
for(int i = 0; i < arrOfPerson.length; i++) {
    arrOfPerson[i] = new Person(arrayOfNames[i]);
}       
于 2013-08-02T03:52:21.600 に答える
1

いくつかのこと:

String[] arrayOfNames = String[3];

間違っています。new演算子を介してメモリを割り当てる必要があります。

String[] arrayOfNames = new String[3];

私の知る限り、識別子を動的に作成する方法はありません。あなたが実際にやろうとしているのは、配列の名前を使用し、何らかの方法でPerson.

これを行うには、コンストラクターに aStringをパラメーターとして持たせることができます。これを行う場合、コードを次のように変更できます。

goGetNamesToFillTheArray();
Person[] people = new Person[3];

for(i = 0; i < 3; i++) 
{
     people[i] = new Person(arrayOfNames[i]);
}

注意:あなたがしたので、私は上記のコードで
使用しましたが、定数またはある種の変数を使用する必要があります。3final int LENGTH = 3;

于 2013-08-02T03:52:01.443 に答える
1

Person クラスを表示する必要があります。しかし、おそらく、このクラスには文字列を取るコンストラクターがあります。おそらく、配列からコンストラクターに文字列を渡す必要があります。

編集:Ran Eldanが答えを示しているように。その答えに1+!


編集:質問に対する最近の編集について:

あなたは次のように述べています:

明確にするために、タイプ person のいくつかのオブジェクトが必要です。配列にエントリ jon と sally が含まれている場合、プログラムの後半で jon.doSomething() と sally.doSomething() を使用できます。

変数に文字列の名前を付けようとしていますが、これは Java の仕組みではないため、これを行うべきではありません。変数名はそれほど重要ではなく、確かにあなたが思っているほど重要ではありませんが、実際に重要なのはオブジェクト参照です。オブジェクトを文字列に関連付ける必要がある場合はマップを使用しますが、これを行う必要さえないと思います。配列またはArrayListを使用してください。この同じタイプの質問は、ここで何百万回も尋ねられています。少し検索すると、同じ答えが見つかります。

于 2013-08-02T03:52:15.827 に答える