Код: Выделить всё
while (!patchFile.getOLineList().get(j).code().startsWith("*TobeJclEnd")) {
JCLCode c = (JCLCode) patchFile.getOLineList().get(j);
newpatchList.add(c);
j++;
}
break;
< /code>
Цикл вернется к этой строке: < /p>
for (String row : NativeFiles.tblJCLPatch()) {
if (row.contains("#" + baseFile[1] + "," + baseFile[2] + ",")) {
Вот мой код
private static SJCLFile jclPatch(SJCLFile jclf) {
String[] baseFile = CnvCommon.baseName.get().split("%");
List newpatchList = new ArrayList();
for (String row : NativeFiles.tblJCLPatch()) {
if (row.contains("#" + baseFile[1] + "," + baseFile[2] + ",")) {
for (int i=0; i < jclf.getOLineList().size(); i++) {
if (jclf.getOLineList().get(i).code().trim().contains(row.split(",")[2])) {
SJCLFile patchFile = NativeFiles.patchFile(row.split(",")[3]);
if (row.split(",")[4].contains("1")) {
while (!jclf.getOLineList().get(i).code().startsWith("/* ")) {
newpatchList.add(jclf.getOLineList().get(i));
i++;
}
if (jclf.getOLineList().get(i).code().startsWith("/* ")) {
newpatchList.add(jclf.getOLineList().get(i));
for (int j = 0; j < patchFile.getOLineList().size(); j++) {
if (patchFile.getOLineList().get(j).code().startsWith("*TobeJclStart")) {
j++;
while (!patchFile.getOLineList().get(j).code().startsWith("*TobeJclEnd")) {
JCLCode c = (JCLCode) patchFile.getOLineList().get(j);
newpatchList.add(c);
j++;
}
break;
}
}
}
} else {
for (int k = 0; k < patchFile.getOLineList().size(); k++) {
if (patchFile.getOLineList().get(k).code().startsWith("*AsisJclStart")) {
} else {
if (patchFile.getOLineList().get(k).code().startsWith("*AsisJclEnd")) {
if (row.split(",")[4].contains("2") || row.split(",")[4].contains("3")) {
for (int j = k; j < patchFile.getOLineList().size(); j++) {
if (patchFile.getOLineList().get(j).code().startsWith("*TobeJclStart")) {
j++;
while (!patchFile.getOLineList().get(j).code().startsWith("*TobeJclEnd")) {
JCLCode c = (JCLCode) patchFile.getOLineList().get(j);
newpatchList.add(c);
j++;
}
break;
}
}
}
break;
} else if (jclf.getOLineList().get(i).code().trim()
.equals(patchFile.getOLineList().get(k).code().trim())) {
if (row.split(",")[4].contains("3") || row.split(",")[4].contains("2")) {
i++;
continue;
}
} else {
logger.errorWithFS(CnvCommon.baseName.get(), row.split(",")[2],
JavaJCLConverterMessages.getString("message.noPatch"));
break;
}
}
}
}
}
newpatchList.add(jclf.getOLineList().get(i));
}
jclf.setOLineList(newpatchList);
}
}
return jclf;
}
< /code>
Этот код вызывает бесконечную цикл. затем приступите к добавлению патча.
Подробнее здесь: https://stackoverflow.com/questions/795 ... op-in-java