字符串比较通过if语句时不应该

时间:2010-08-02 14:11:12

标签: grails groovy

我正在将excel表的值与从数据库返回的记录值进行比较,并且当if语句失败时,一条记录正在通过if语句。

if语句如下所示:

if (record.value.equals(cellVal) == false)

    {
        record.value = cellVal
        record.modifyUser = userId
        //dataService.updateManualEntry(record)
        println "UPDATING ${record.value.equals(cellVal)}"
        println "record value: ${record.value}"                                 
        updatedCount++
        }else{
            println "NOT UPDATING [ [ ${record.value.length()} ]  + [${cellVal.length()}]"

        }

            }

println显示println "UPDATING ${record.value.equals(cellVal)}"的值为true,在这种情况下我不明白为什么它会通过if语句。另外,字符串的长度为0.

我可以得到第二双眼睛并弄清楚为什么真正的价值会通过这个if语句?

5 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

下面:

record.value = cellVal

您已将record.value设置为if块内的cellVal。这就是println返回true的原因。

答案 2 :(得分:2)

(true == false) ⇒ false

答案 3 :(得分:2)

println显示if语句中第1行的真正becoz

  

record.value = cellVal

尝试在if语句之前打印相同的值。

答案 4 :(得分:0)

if - > record.value.equals(cellVal)给你假 你比较(假)==假,自然假总是=假,因此它会通过

2,看看你的代码,

record.value = cellVal

record.modifyUser = userId

// dataService.updateManualEntry(记录)

println“UPDATING $ { record.value.equals(cellVal)}”

在执行打印之前,请指定record.value = cellVal。 因为它会打印出来。