使用相同的类时,使用for循环设置值而不替换现有值

时间:2017-04-05 03:55:45

标签: java xml for-loop

我需要有关如何使用for循环设置值的帮助,而无需在使用类时替换现有值。例如,我需要打印出三个不同的值,分别是test1,test2,test3。下面是代码,

    PaymentInstructionInformation3 paymentInstructionInformation3 =  new PaymentInstructionInformation3();
    for(int i=0 ;i<4;i++){
        if(i==1)
        {
            PartyIdentification32 partyIdentification32Body1 = new PartyIdentification32();
            partyIdentification32Body1.setNm("test1");
            paymentInstructionInformation3.setDbtr(partyIdentification32Body1);

        }else
        if(i==2)
        {
            PartyIdentification32 partyIdentification32Body2 = new PartyIdentification32();
            partyIdentification32Body2.setNm("test2");
            paymentInstructionInformation3.setDbtr(partyIdentification32Body2);

        }else
        if(i==3)
        {
            PartyIdentification32 partyIdentification32Body3 = new PartyIdentification32();
            partyIdentification32Body3.setNm("test3");
            paymentInstructionInformation3.setDbtr(partyIdentification32Body3);
        }
    }
    totalLst.add(paymentInstructionInformation3);

当前输出

 <PmtInf>
        <Dbtr>
            <Nm>test3</Nm>
        </Dbtr>
 </PmtInf>

预期产出

 <PmtInf>
        <Dbtr>
            <Nm>test1</Nm>
            <Nm>test2</Nm>
            <Nm>test3</Nm>
        </Dbtr>
 </PmtInf>

实施班级

        protected String nm; 
       public String getNm() {
        return nm;
        }
      public void setNm(String value) {
        this.nm = value;
        }

感谢您的帮助

6 个答案:

答案 0 :(得分:0)

尝试把这一行:

totalLst.add(paymentInstructionInformation3);

进入for循环。这会导致totalList内部添加3 paymentInstructionInformation3 for循环。

如果没有帮助,请写下发生的事情

答案 1 :(得分:0)

为什么你需要if语句?你在每个区块做同样的事情

此外,您必须添加到循环内的列表中,而不是在其结束后

for(int i=1 ;i<4;i++){
    PaymentInstructionInformation3 pay =  new PaymentInstructionInformation3();

    PartyIdentification32 party = new PartyIdentification32();
    party.setNm("test"+i);
    pay.setDbtr(party);

    totalLst.add(pay) ;
}

答案 2 :(得分:0)

请将paymentInstructionInformation3对象创建语句放在for循环中作为第一个语句。这样可以避免覆盖这些值。将for循环中的totalLst.add()语句作为最后一个语句放置,以便将所有三个项目添加到列表中。

答案 3 :(得分:0)

此行TotalLst.add(paymentInstructionInformation3);已经不在了。所以,它只添加一次而不是第三次。

答案 4 :(得分:0)

你可以做两件事: 你可以进行初始化和实例化 paymentInstructionInformation3 在if / else块和行之前进入循环 totalLst.add(paymentInstructionInformation3); 在这个块之后。但在这种情况下,您将有3个PaymentInstructionInformation3实例。 2.你可以保留类名为PaymentInstructionInformation3的成员,它叫做我猜想nm不是单个实体,而是作为这个实体的列表。在每个if / else部分中,您都可以为此列表添加值。

答案 5 :(得分:0)

首先,您为什么要使用循环来创建 partyIdentification ?由于您始终创建partyIdentification32BodyN,因此您可以在没有循环的情况下实例化它们。它会像这样:

PaymentInstructionInformation3 paymentInstructionInformation3 =  new PaymentInstructionInformation3();

PartyIdentification32 partyIdentification32Body1 = new PartyIdentification32();
partyIdentification32Body1.setNm("test1");
paymentInstructionInformation3.setDbtr(partyIdentification32Body1);

PartyIdentification32 partyIdentification32Body2 = new PartyIdentification32();
partyIdentification32Body2.setNm("test2");
paymentInstructionInformation3.setDbtr(partyIdentification32Body2);

PartyIdentification32 partyIdentification32Body3 = new PartyIdentification32();
partyIdentification32Body3.setNm("test3");
paymentInstructionInformation3.setDbtr(partyIdentification32Body3);

其次,您的 paymentInstructionInformation3.setDbtr 似乎不会将 partyIdentification32BodyN 添加到列表中,而是替换以前的值。

您可以将 paymentInstructionInformation3.setDbtr 更改为 paymentInstructionInformation3.addDbtr ,并将参数添加到PaymentInstructionInformation3内的List。例如:

class PaymentInstructionInformation3 {
    List<PartyIdentification32> dbtrList = new ArrayList<>();

    public void addDbtr(PartyIdentification32 debtr) {
        this.dbtrList.add(debtr);
    }
}

我希望它有所帮助。