如下代码是有问题的,直到某次递归检查FileName没有问题那么就不生成新名字再检查了,直接返回,这是我们想要的,但是之前失败的调用也会逐一出栈且反回一个值,应为返回了我们每次调用的局部变量,那么就有问题了,返回多次,想要的值被覆盖。
改正:每次返回一个全局变量,代码中打开注释就好了。
final String txtNameFirstPart = "New Text Document";
final String txtNameSecondPart = ".txt";
// private String theTrueNewName = "";
private String getTheTXTNewName( String newFileName, int checkNameTimes ){
// theTrueNewName = newFileName;
if(arrayadapter!=null && arrayadapter.getM_Items()!=null && arrayadapter.getM_Items().size()>0){
List<ObjItem> items = arrayadapter.getM_Items();
for(ObjItem item : items){
if(item.ObjName.equals(newFileName)){
checkNameTimes++;
getTheTXTNewName(txtNameFirstPart+" ("+checkNameTimes+")"+txtNameSecondPart, checkNameTimes);
break;
}
}
}
//return theTrueNewName;
return newFileName;
}
网友评论