プロが教えるわが家の防犯対策術!

Java、Java3Dを最近始めたばかりのものです。

質問
Shape3D shape = new Shape3D(geometry,ap);
上記ような、“shape”、“ap”を
forループ内で、“shape1, shape2, shape3, . . .”というように、オブジェクト名を変更していきたいのですが、どのように行ったらよいのでしょうか?

宜しくお願いいたします。

A 回答 (2件)

まず「オブジェクト名」ではなく「変数名」です。


変数名に依存したロジックはそもそも間違っていると思ってください。
0..nといった添え字に何らかの意味があるのであれば(画面と密に依存性がある、等)
前者の回答の通り、配列かコレクションAPIを使用します。

まだJavaにあまり慣れていないようであれば、配列でも構わないと思います。
オブジェクトの個数(配列の範囲)が確定しているのであればなおさらです。

Shape3D[] shapes = new Shape3D[n];
shapes[index] = new Shape3D();

しかし、最終的にはコレクションAPIを使用することを目標としたほうがよいでしょう。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
shape3Dの変数名を配列定義することで、プログラムの作成が進みました。

これから、まだまだ勉強していきたいと思います。
ありがとうございました。

お礼日時:2007/07/30 20:19

格納するオブジェクト名(shape)を変更していきたいと感じたときは、


配列の利用を検討してください。

(例) Shape3Dを格納する配列
java.util.ArrayList<Shape3D> shapeList;
オブジェクト名も情報として必要なら
java.util.HashMap<String,Shape3D> shapeMap;

次に、引数(ap)を変更していきたいと感じたときは、
引数のオブジェクトを配列に格納し、それをループで回してみてください。

用途がはっきりしませんのであまり具体的なことは言えません。
参考までにどうぞ。

この回答への補足

お早いお返事ありがとうございます。
用途としましては、10個程度ある空間物体(geometry)の表示を個別に
ボタン設定で変化(POLYGON_LINE 又は POLYGON_FILL 又は
setTransparency で 透明度を変えたり)させるプログラムを
作ろうとしています。

教えていただいたArrayListでのオブジェクト名の引渡し方ですが、
どのようにするとよろしいのでしょうか?
以下のようなプログラム構成を考えています。
素人質問ですみませんが、宜しくお願いいたします。

int i;
ArrayList apList = new ArrayList();
ArrayList shapeList = new ArrayList();
for( i=0; i<=10; i++ ){
apList.add("ap"+i);
shapeList.add("Shape"+i);
}
for( i=0; i<=10; i++ ){
Appearance の設定
Point3d で点を設定
QuadArray で geometry を生成
Shape3D shape = new Shape3D(geometry,ap);
// ↑ここの記述が分かりません。 ↑  
}

補足日時:2007/07/29 16:52
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!