- PR -

vectorのコピーについて

1
投稿者投稿内容
U1
会議室デビュー日: 2002/02/01
投稿数: 11
投稿日時: 2002-02-06 20:47
はじめましてU1といいます。

今vectorを使っていろいろな処理をしようとしているのですが
vectorを引数として別なクラスをコンストラクタするときに渡して
別なクラスのクラス変数に格納したいのですが
そのときは以下のような形でできますでしょうか?
またメソッドとしてiという引数を渡されて
vectorのi番目の要素をint型として返すというような処理も
しようとしているのですが
あのif文のような比較はできますでしょうか?
もしできましたらアドバイスのほうよろしくお願いいたします。

public class abc {
Vector NGFlag = new Vector();
int i;
public abc(Vector vec){
this.vector = vec; /*引数で持ってきたvectorを格納する。*/
}
public int Cnt(i) {
if((int)vector.elementAt(i) == -1)
return (int)vector.elementAt(i) -1;
else return (int)vector.elementAt(i);
}
}
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-02-06 23:32
コード:
00: public class abc {                //基本的にクラス名の一文字目は大文字にする 
01:    Vector NGFlag = new Vector();  //コンストラクタで初期化するのでnew Vector)は必要ありません。さらに、変数の一文字目は小文字にするのが行儀の良い書き方。
02:    int i;                         //こういう変数はグローバル変数にしないほうが良い。またもっと分かり易い名前にしましょう。
03:
04:    public abc(Vector vec) { 
05:        this.vector = vec;         //this.vectorではなくthis.NGFlagでは?
06:    }
07:
08:    public int Cnt(i) {            //メソッドの名前の一文字目は小文字が行儀の良い書き方。あと、iの型は何?int? double? float? Object?
09:        if((int)vector.elementAt(i) == -1)   //Vectorの中に格納したものはオブジェクトでないといけません。したがってプリミティブなint型へキャストはできません。かわりに、Integerを格納すとよい。
10:            return (int)vector.elementAt(i) -1; 
11:        else
12:            return (int)vector.elementAt(i); 
13:    } 
14:} 




引用:

今vectorを使っていろいろな処理をしようとしているのですが
vectorを引数として別なクラスをコンストラクタするときに渡して
別なクラスのクラス変数に格納したいのですが
そのときは以下のような形でできますでしょうか?


できます。

引用:

vectorのi番目の要素をint型として返すというような処理も
しようとしているのですが
あのif文のような比較はできますでしょうか?


できますが、int型としてはできません。
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2002-02-06 23:41
横長になってしまい、すみません。コメントをつけたかったので・・・。

Vectorはオブジェクトでないと格納できないので、int型の要素を取り扱うときにはIntegerオブジェクトを使うといいですよ。

コード:
public class VectorTest {
    Vector integerVec;

    public VectorTest() {
        integerVec = new Vector();
    }

    public void addInteger(int i) {
        integerVec.add( new Integer(i) );
    }

    public int getIntegerAt(int index) {
        return ((Integer)integerVec.elementAt(index)).toInt();
    }
}


そらで書いたので多少間違いがあるかもしれませんが(特に例外処理では)、基本的にこんな使い方をします。Vectorは便利なので覚えておくとべんりですよ。
U1
会議室デビュー日: 2002/02/01
投稿数: 11
投稿日時: 2002-02-07 17:35
返信ありがとうございました。
間違いばかりですみません。
vector型はオブジェクトでしか扱えないんですね。
マニュアルを読んでみたところ、
vector.elementAt(i) のiの部分はint型とかいてあったので
あれでいいのかって思っていたので。
どうもありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)