0

私は配列リストを持っていますが、何らかの理由で以前の値をすべて上書きし、最後に追加された値のみを返します。したがって、追加するオブジェクトが 3 つあり、配列内の最後のオブジェクトの 3 倍になります。コードは次のとおりです: (変数が英語でなくてすみません):

public class Convertor {
ArrayList<ArrayList<String>> hervormen = new ArrayList<ArrayList<String>>();
String Voornaam;
public Convertor(ArrayList<ArrayList<String>> hervormen)
{
    this.hervormen=hervormen;
}
public ArrayList<HervormdeRij> Hervormen(){
    ArrayList<HervormdeRij> hervormd = new ArrayList<HervormdeRij>();
    HervormdeRij HervormdeRij = new HervormdeRij();
    int teller = 0;
    ArrayList<String> rij = new ArrayList<String>();
    while (teller < hervormen.size()){
        rij=    hervormen.get(teller);

        HervormdeRij.setDag(rij0(rij));
        HervormdeRij.setUur(rij1(rij));
        HervormdeRij.setDokterId(rij2DokterId(rij));
        HervormdeRij.setDuur(rij2Duur(rij));
        HervormdeRij.setAchternaam(rij5(rij));
        HervormdeRij.setVoornaam(Voornaam);
        HervormdeRij.setAdress(rij6(rij));
        HervormdeRij.setGemeente(rij7(rij));
        HervormdeRij.setTel(rij8(rij));
        HervormdeRij.setCommentaar(rij10(rij));
        HervormdeRij.setEmail(rij11(rij));


        hervormd.add(HervormdeRij);

        teller++;
    }



    return hervormd;

したがって、「hervormd」は常に最後の「HervormdeRij」の 2000 倍 (「hervormen」.size() の量) です。コードにエラーが表示されないのは本当ですか? (そして、「hervormen」は同じ値の 2000 倍であると 1000% 確信しています。)

前もって感謝します

4

5 に答える 5

1

while の反復ごとに、新しい HervormdeRij のインスタンス化を試みます。したがって、次のようになります。

public ArrayList<HervormdeRij> Hervormen(){
    ArrayList<HervormdeRij> hervormd = new ArrayList<HervormdeRij>();
    HervormdeRij HervormdeRij;
    int teller = 0;
    ArrayList<String> rij = new ArrayList<String>();
    while (teller < hervormen.size()){
        HervormdeRij = new HervormdeRij();
        rij=    hervormen.get(teller);

        HervormdeRij.setDag(rij0(rij));
        HervormdeRij.setUur(rij1(rij));
        HervormdeRij.setDokterId(rij2DokterId(rij));
        HervormdeRij.setDuur(rij2Duur(rij));
        HervormdeRij.setAchternaam(rij5(rij));
        HervormdeRij.setVoornaam(Voornaam);
        HervormdeRij.setAdress(rij6(rij));
        HervormdeRij.setGemeente(rij7(rij));
        HervormdeRij.setTel(rij8(rij));
        HervormdeRij.setCommentaar(rij10(rij));
        HervormdeRij.setEmail(rij11(rij));


        hervormd.add(HervormdeRij);

        teller++;
    }
}
于 2012-05-10T15:46:58.917 に答える
1

オブジェクトを配列に追加する前に、オブジェクトの新しいインスタンスを初期化する必要があります。また、クラス名で変数を定義しないように、変数の名前HervormdeRijhervormdeRij

public ArrayList<HervormdeRij> Hervormen(){
    ArrayList<HervormdeRij> hervormd = new ArrayList<HervormdeRij>();
    HervormdeRij hervormdeRij;
    int teller = 0;
    ArrayList<String> rij = new ArrayList<String>();
    while (teller < hervormen.size()){
        rij=    hervormen.get(teller);
        hervormdeRij = new HervormdeRij();
        hervormdeRij.setDag(rij0(rij));
        hervormdeRij.setUur(rij1(rij));
        hervormdeRij.setDokterId(rij2DokterId(rij));
        hervormdeRij.setDuur(rij2Duur(rij));
        hervormdeRij.setAchternaam(rij5(rij));
        hervormdeRij.setVoornaam(Voornaam);
        hervormdeRij.setAdress(rij6(rij));
        hervormdeRij.setGemeente(rij7(rij));
        hervormdeRij.setTel(rij8(rij));
        hervormdeRij.setCommentaar(rij10(rij));
        hervormdeRij.setEmail(rij11(rij));

        hervormd.add(HervormdeRij);
        teller++;
    }

    return hervormd;
}
于 2012-05-10T15:42:52.913 に答える
1
  • as の名前を変更して、他のコードの読み取りと混同しないようにします。 HervormdeRij HervormdeRij = new HervormdeRij();になりHervormdeRij hr = new HervormdeRij();ます。

  • ループ内に移動してwhile()、毎回 type の新しいインスタンスを取得できるようにしますHermorvdeRij

于 2012-05-10T15:43:50.573 に答える