for或者while的标记循环
今天在写代码的时候,发现一个for循环前有一个字母,不知道这个是什么语法,后来查了一下,这个语法是用来实现标记循环的功能
这个是代码块
r:for(int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++){
HSSFRow row = sheet.getRow(rowNum);
//删除下面这一行
System.out.println("行号"+rowNum+"编码"+POIUtils.getCellValue(row.getCell(0)));
if(row == null)
continue;
//判断编码是否为空
HSSFCell cellA = row.getCell(0);
String codeVal = POIUtils.getCellValue(cellA);
if(StringUtils.isEmpty(codeVal)){//该行订单号为空
//excpMsg += "第[" + (row.getRowNum()+1) + "]行订单号是空的;";
continue;
}
if(omsCmccOrderList.size()>0){//省移动B2B集合存在订单
boolean flag = false;//标记省移动B2B集合中是否包含该订单
//遍历省移动B2B订单集合
for(OmsCmccOrderObject bound : omsCmccOrderList){
if(codeVal.equals(bound.getOrderNo())){
//excel去重
num = String.valueOf((row.getRowNum()+1));
errMsg = "该行与第["+num+"]行订单号["+codeVal+"]相同!";
cmccOrderMapper.insertExceptionMsg(num, errMsg);
//省移动B2B集合中存在该订单
flag = false;
continue r;
}else {
//省移动B2B集合中没有重复订单
//判断该订单是否在数据库中已存在,那么调用update函数,那么根据该订单的状态,若是-9那么改成0,并返回审核通过;如果是0那么返回审核通过,如果不存在报错
flag = false;
}
}
这个是上面代码的图片
可以看到在标记1出,出现的r:这个就是标记循环,标记2是最外面的for循环,标记3的地方是一个for循环,标记4的地方就是循环标签出现的地方。
根据return的语法,如果不同循环标签的话,那么在标记4处的return语句,会跳出该次循环,但是回跳到标记3处的循环,但是如果你要是实现的是跳到标记1处的循环,那么用标签循环这个语法就可以实现。return r,就会跳到标记1处的for循环;