返回错误答案的groovy if语句

返回错误答案的groovy if语句,groovy,Groovy,任何有助于理解这一点的帮助都将不胜感激 移动我的评论以回答: 我不知道groovy是如何工作的,但我将假设!最低的评估!0=>true,因此当上一个值为0时,下一个要检查的值变为最低值 可能将最低值初始化为null,然后仅检查它是否为null或更低: Caught: Assertion failed: assert sortList(odds) == [-6,0,2] | | | |

任何有助于理解这一点的帮助都将不胜感激

移动我的评论以回答:

我不知道groovy是如何工作的,但我将假设
!最低的
评估
!0
=>
true
,因此当上一个值为
0
时,下一个要检查的值变为最低值

可能将最低值初始化为null,然后仅检查它是否为null或更低:

Caught: Assertion failed:        

assert sortList(odds) == [-6,0,2]    
       |        |     |            
       |        []    false
       [-6, 2, 0]               

Assertion failed:          

assert sortList(odds) == [-6,0,2]                  
       |        |     |                            
       |        []    false                        
       [-6, 2, 0]                                  

        at TonyZeroTest.run(TonyZeroTest.groovy:19)
        at RunScript.run(RunScript.groovy:66)


Process exited with code: 1
def lower=null
for(列表1中的n){
如果(最低==null | | n<最低)最低=n
}

此行中存在问题:

def lowest = null
for(n in list1){
    if(lowest == null || n < lowest) lowest = n
}
如果(!loost | | loost==null | | n
最低值
=0时发生。我不知道你为什么要测试
!最低
最低==null
。当
最低值
为0时,
!lowest
为true,您将把
lowest
重新分配给
n
的任何值,而不管该值是否小于当前的
lowest
(0)

只需删除
!最低
条件,您应该很好

有关为什么
的更多信息!最低==true
,请检查此处:

def lowest = null
for(n in list1){
    if(lowest == null || n < lowest) lowest = n
}
if(!lowest || lowest == null || n < lowest) lowest = n