所以在这个方法中,while循环的条件是我选择在行代码中删除的东西,并创建一个在需要时调用的方法。但是,第一种方法不起作用,并导致应用程序以静默方式锁定。
def getLineRows( rows, index ) {
def lineRows = [rows[index]]
def newOperator
def i = index + 1
if ( index <= ( rows.size() - 1 ) ) {
newOperator = false
这是有问题的代码。
while ( index <= ( rows.size() - 1 ) && !newOperator ) {
if ( rows[index].PGM_PROC_OPE.trim() == "" ||
( rows[index].PGM_PROC_TY == "OR" ||
rows[index].PGM_PROC_TY == "AN" ) ) {
lineRows << rows[i]
} else {
newOperator = true
}
i++
}
}
return lineRows
}
在第二个和视觉上相同的方法中,我简单地创建了一个名为moreRows(rows,index)的方法。还有另外两种方法调用,但是它们已经通过测试被排除在考虑之外。
def moreRows( rows, index ) {
return index <= ( rows.size() - 1 )
}
当使用moreRows时,使用moreRows会导致下面的代码正常运行,而不是上面的方法,其中moreRows符合要求?
def getLineRows( rows, index ) {
def lineRows = [rows[index]]
def newOperator
def i = index + 1
if ( moreRows( rows, i ) ) {
newOperator = false
while ( moreRows( rows, i ) && !newOperator ) {
if ( operatorEmpty( rows, i ) || isSpecialProcType( rows, i ) ) {
lineRows << rows[i]
} else {
newOperator = true
}
i++
}
}
return lineRows
}
答案 0 :(得分:2)
您定义i
并在循环中递增它,但不要在while
语句中使用它
while ( index <= ( rows.size() - 1 ) && !newOperator ) {
所以你在这里进入无限循环。