Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用While循环计算列表的元素_Java - Fatal编程技术网

在java中使用While循环计算列表的元素

在java中使用While循环计算列表的元素,java,Java,我在URL中传递一些参数,然后将它们添加到列表中。我的列表限制为5个元素。因此,如果有人在URL中添加第6个元素,列表将忽略它。所以我尝试使用一个计数器,但是逻辑并没有按预期工作。我正在使用While循环来实现这一点。因此,如果列表大小小于5,则设置AgencyCD,否则只返回列表 private List<IUiIntegrationDto> generateViewIntegrationReportData(ESignatureIntegrationConfig eSignCon

我在URL中传递一些参数,然后将它们添加到列表中。我的列表限制为5个元素。因此,如果有人在URL中添加第6个元素,列表将忽略它。所以我尝试使用一个计数器,但是逻辑并没有按预期工作。我正在使用
While
循环来实现这一点。因此,如果列表大小小于5,则设置AgencyCD,否则只返回列表

private List<IUiIntegrationDto> generateViewIntegrationReportData(ESignatureIntegrationConfig eSignConfig) throws Exception {
    int counter = 1;
    if(eSignConfig.getAdditionalAgencyCds() != null ) {

        List<String> combinedAgencyCds = new ArrayList<String>();

        for(String agencyCd : eSignConfig.getAgencyCd()) {
            combinedAgencyCds.add(agencyCd);
        }

        StringTokenizer token = new StringTokenizer(eSignConfig.getAdditionalAgencyCds().toString(), StringConstants.COMMA);
        while(token.hasMoreTokens()) {
            combinedAgencyCds.add(token.nextToken());
        }

        while(combinedAgencyCds.size() < 5) {
            counter = counter + 1;
            eSignConfig.setAgencyCd(combinedAgencyCds);
        }

    //  eSignConfig.setAgencyCd(combinedAgencyCds);
    } 
    List<IUiIntegrationDto> intgList = getUiIntegrationManager().retrieveUiIntegrationReportData(eSignConfig.getAgencyCd(), eSignConfig.getCreatedDays(),
            eSignConfig.getLob(), eSignConfig.getTransactionStatus(), eSignConfig.getAccounts(), eSignConfig.getSortKey(), eSignConfig.getSortOrder());

    return intgList;
}
private List generateViewIntegrationReportData(ESignatureIntegrationConfig eSignConfig)引发异常{
int计数器=1;
if(eSignConfig.getAdditionalAgencyCds()!=null){
List combinedAgencyCds=new ArrayList();
对于(字符串agencyCd:eSignConfig.getAgencyCd()){
combinedAgencyCds.add(agencyCd);
}
StringTokenizer令牌=新的StringTokenizer(eSignConfig.getAdditionalAgencyCds().toString(),StringConstants.逗号);
while(token.hasMoreTokens()){
combinedAgencyCds.add(token.nextToken());
}
while(combinedAgencyCds.size()<5){
计数器=计数器+1;
eSignConfig.setAgencyCd(combinedAgencyCds);
}
//eSignConfig.setAgencyCd(combinedAgencyCds);
} 
List intgList=getUiIntegrationManager().retrieveUiIntegrationReportData(eSignConfig.getAgencyCd(),eSignConfig.getCreatedDays(),
eSignConfig.getLob()、eSignConfig.getTransactionStatus()、eSignConfig.getAccounts()、eSignConfig.getSortKey()、eSignConfig.getSortOrder();
返回intgList;
}
我不完全确定这个逻辑是否正确,或者是否有更好的方法


谢谢

好的,让我们来分析一下您的代码目前正在做什么

int counter = 1;

while(combinedAgencyCds.size() < 5) {
    counter = counter + 1;
    eSignConfig.setAgencyCd(combinedAgencyCds);
}
请注意,不需要为计数器变量进行显式声明,因为“i”对您来说很重要


现在,在循环中的实际逻辑中,我不确定
setAgencyCd
方法的作用,但是如果它只是像它看起来那样在
eSignConfig
中设置一个列表变量,那么反复重复它不会有任何作用。从我在代码中看到的情况来看,您正在设置一个具有相同值的变量5次。如果您需要更多的解释,请告诉我,我很乐意修改答案。

好的,让我们详细分析一下您的代码目前正在做什么

int counter = 1;

while(combinedAgencyCds.size() < 5) {
    counter = counter + 1;
    eSignConfig.setAgencyCd(combinedAgencyCds);
}
请注意,不需要为计数器变量进行显式声明,因为“i”对您来说很重要


现在,在循环中的实际逻辑中,我不确定
setAgencyCd
方法的作用,但是如果它只是像它看起来那样在
eSignConfig
中设置一个列表变量,那么反复重复它不会有任何作用。从我在代码中看到的情况来看,您正在设置一个具有相同值的变量5次。如果您需要更多的解释,请告诉我,我将很乐意修改答案。

在代码中尝试此选项,而不是最后一个选项:

if(combinedAgencyCds.size() <= 5) {
   eSignConfig.setAgencyCd(combinedAgencyCds); 
} else {
   eSignConfig.setAgencyCd(combinedAgencyCds.subList(0, 5));
}

请在代码中尝试以下操作,而不是最后一次:

if(combinedAgencyCds.size() <= 5) {
   eSignConfig.setAgencyCd(combinedAgencyCds); 
} else {
   eSignConfig.setAgencyCd(combinedAgencyCds.subList(0, 5));
}

调用eSignConfig.setAgencyCd()时,是否确实combinedAgencyCds列表正在减少?如果不是,则第二个while循环将是无限的。还有,计数器是用来做什么的?是的,这是我调试时发现的。我现在正在使用if条件。if(combinedAgencyCds.size()<5){counter=counter+1;eSignConfig.setAgencyCd(combinedAgencyCds);}那么您想要一个
AgencyCd
AdditionalAgencyCd
的组合列表吗?如果已经有5个或更多代理CD,会发生什么情况?另外,你的计数器似乎没有做任何事情,所以基本上我不想添加第6个元素。如果元素小于5,则将它们添加到列表中。是的,它们是结合在一起的。如果已经有5个元素,则可以忽略第6个元素。在调用eSignConfig.setAgencyCd()时,是否确定combinedAgencyCds列表正在减少?如果不是,则第二个while循环将是无限的。还有,计数器是用来做什么的?是的,这是我调试时发现的。我现在正在使用if条件。if(combinedAgencyCds.size()<5){counter=counter+1;eSignConfig.setAgencyCd(combinedAgencyCds);}那么您想要一个
AgencyCd
AdditionalAgencyCd
的组合列表吗?如果已经有5个或更多代理CD,会发生什么情况?另外,你的计数器似乎没有做任何事情,所以基本上我不想添加第6个元素。如果元素小于5,则将它们添加到列表中。是的,它们是结合在一起的。如果已经有5个元素,可以忽略第6个元素。这是有意义的,我不使用while循环,因为它是无限的。我试图实现的是计算列表中元素的数量,这就是我使用计数器的原因。如果列表的大小为5或小于5,则使用set方法设置agencyCds,否则忽略第6个元素,但添加其余元素。这是有意义的,我不使用while循环,因为它是无限的。我试图实现的是计算列表中元素的数量,这就是我使用计数器的原因。如果列表的大小为5或小于5,则使用set方法设置agencyCds,否则忽略第6个元素,但添加其余元素。这就是我要查找的mdewit。这太棒了。它正在按预期工作。非常感谢你的帮助。这么好的学习。很酷没问题,很高兴它有用:)这就是我要找的mdewit。这太棒了。它正在按预期工作。非常感谢你的帮助。这么好的学习。很酷没问题,很高兴它有用:)