for或者while的标记循环

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;
			      	}
			     }


这个是上面代码的图片


for循环的标记循环

    可以看到在标记1出,出现的r:这个就是标记循环,标记2是最外面的for循环,标记3的地方是一个for循环,标记4的地方就是循环标签出现的地方。

    根据return的语法,如果不同循环标签的话,那么在标记4处的return语句,会跳出该次循环,但是回跳到标记3处的循环,但是如果你要是实现的是跳到标记1处的循环,那么用标签循环这个语法就可以实现。return r,就会跳到标记1处的for循环;

posted @ 2015-12-11 16:07  杜珊  阅读(2506)  评论(0编辑  收藏  举报