2010-08-02 6 views
0

Je compare les valeurs d'une feuille Excel pour enregistrer les valeurs renvoyées à partir d'une base de données et un enregistrement passe par l'instruction if lorsque l'instruction if échoue.Comparaison de chaînes passant par une instruction if should not

L'instruction if ressemble à ceci:

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()}]" 

     } 

      } 

Le println montre que la valeur de println "UPDATING ${record.value.equals(cellVal)}" évalue pour être vrai, dans ce cas, je ne comprends pas pourquoi il passe par l'instruction if. Est-ce que je peux obtenir une deuxième paire d'yeux et comprendre pourquoi une vraie valeur passerait par cette instruction if?

+0

Vous imprimez 'UPDATING $ {record.value.equals (cellVal)}' _after_ vous avez fait 'record.value = cellVal'. Imprimez-le avant de le changer, et montrez-nous les chaînes spécifiques sur lesquelles il échoue. En outre, entourez les valeurs que vous imprimez avec, par exemple, a 'donc il est plus facile de voir les espaces – nos

+0

qui a besoin de tdwtf :) – fearofawhackplanet

+0

Quelle est la valeur de cellVal? Quelle langue est-ce? Désolé, Java marqué bien sûr ... mais où sont vos points-virgules? Js? –

Répondre

2
(true == false) ⇒ false 
4

Vos printlns se produisent après vous avez changé la valeur pour correspondre.

3

ici:

record.value = cellVal 

Vous avez mis record.value à l'intérieur du bloc cellVal if. C'est pourquoi le println renvoie la valeur true.

2

println est vrai becoz montrant de la 1ère ligne dans votre instruction if

record.value = cellVal

essayez d'imprimer la même valeur avant instruction if.

0

si -> record.value.equals (cellVal) donnent u faux u comparer (false) == false, = naturellement faux est toujours faux, d'où il passera par

2, regardez le code ur ,

record.value = cellVal

record.modifyUser = userId

//dataService.updateManualEntry(record)

println "ACTUALISATION $ {record.value.equals (cellVal)}"

U = assignez record.value cellVal avant u ne une impression. De cuz il imprimera vrai.