如何使用其循环之外的变量

时间:2016-07-28 02:44:38

标签: java

当声明变量等于0时,我声明了用于使数据表中的行变色的变量。所以这是我的代码。

private String validationField(List<List<TsmTimesheetHdr>> timesheetList) {
    String errorCode = "";

    if (isOverLimitPerDay()) {
        errorCode = MessageConst.CIELO_APP_ERR_00013;
    }

    for (List<TsmTimesheetHdr> list : timesheetList) {
        int count = 0;
        boolean isTimeEntry = false;
        for (TsmTimesheetHdr hdr : list) {
            if (count++ == 0) {
                if (Utils.isEmpty(hdr.getProjectCode()) || Utils.isEmpty(hdr.getActivity())
                        || Utils.isEmpty(hdr.getTaskCode())) {
                    errorCode = MessageConst.CIELO_APP_ERR_00003;
                    hdr.setIsValid("0");
                    continue;
                }
                else {
                    hdr.setIsValid("1");
                }
            }
            if (hdr.getHoursSpend() != 0.0) {
                isTimeEntry = true;
            }

        }

        if (!Utils.isEmpty(errorCode))
            continue;
        if (!isTimeEntry) {
            errorCode = MessageConst.CIELO_APP_ERR_00002;
            break;
        }
    }

    return errorCode;
}

我如何在这个if语句中使用hdr

            if (!isTimeEntry) {
            errorCode = MessageConst.CIELO_APP_ERR_00002;
            break;
            }

2 个答案:

答案 0 :(得分:1)

如果您正在进行此验证:

if (!isTimeEntry) {
errorCode = MessageConst.CIELO_APP_ERR_00002;
break;
}

对于特定 hdr对象,您必须确定何时识别循环中的此hdr对象然后将此hdr设置为局部变量,然后在验证中使用此变量...

类似的东西:

private String validationField(List<List<TsmTimesheetHdr>> timesheetList) {
    String errorCode = "";
    TsmTimesheetHdr  distinctHdr;

    // for loop ...
     // for loop [
         if(hdr.meets_criteria()){
            distinctHdr = hdr;
         }
    ]

   // the use this obj for your validation
if (!isTimeEntry) {
errorCode = MessageConst.CIELO_APP_ERR_00002;
// now you have acccess ...
doSomethingWithHdrs(distictHdr);
break;
}   

如果您的验证适用于所有 hdr个对象,请移动您的

if (!isTimeEntry) {
errorCode = MessageConst.CIELO_APP_ERR_00002;
break;
}

进入循环。

希望我理解你的问题,gl。

答案 1 :(得分:0)

您将hdr保存到原始列表中并相应地使用这些列表。见样本

    for (List<TsmTimesheetHdr> list : timesheetList) {
            int count = 0;
            boolean isTimeEntry = false;
            for (TsmTimesheetHdr hdr : list) {
                if (count++ == 0) {
                    if (Utils.isEmpty(hdr.getProjectCode()) || Utils.isEmpty(hdr.getActivity())
                            || Utils.isEmpty(hdr.getTaskCode())) {
                        errorCode = MessageConst.CIELO_APP_ERR_00003;
                        hdr.setIsValid("0");
                        continue;
                    } else {
                        hdr.setIsValid("1");
                    }
                }
                if (hdr.getHoursSpend() != 0.0) {
                    isTimeEntry = true;
                }  
            }

            if (!Utils.isEmpty(errorCode)) {
                continue;
             }

            if (!isTimeEntry) {
                     list.get(count).setIsValid("0") 
                     errorCode = MessageConst.CIELO_APP_ERR_00002;
                     break;                       
             }

            }
        }