2013-01-15 2 views
0

J'essaie d'attribuer une valeur par défaut à une variable si la variable contient une chaîne vide. J'ai utilisé les codes suivants, mais ils ne fonctionnent pas:Comment vérifier une chaîne vide

if (d.lat.trim().isEmpty()) 
    latt = 9.0819990; 
else { 
    latt = Double.valueOf(d.lat.trim()).doubleValue(); 
} 

Les résultats de code ci-dessus dans une erreur:

cannot find symbol 
symbol : method isEmpty() 
location: class java.lang.String 

alors je

if (" ".equals(d.lat.trim())) 
    latt = 9.0819990; 
else { 
    latt = Double.valueOf(d.lat.trim()).doubleValue(); 
} 

Le code ci-dessus sauts la section if et essaie de convertir la chaîne vide en double en lançant ainsi une erreur sur la chaîne vide.

Alors, qu'est-ce que je fais mal?

+3

'Double.valueOf (str) .doubleValue()' peut être raccourci à 'Double.parseDouble (str)' – beny23

+0

Il pourrait encore être raccourci à 'Latt = new Double (str)' –

Répondre

3

La chaîne vide est "", et non " " (notez qu'il n'y a pas d'espace entre les guillemets).

1

Le premier bloc me semble correct, mais vous compilez probablement avec Java5, qui n'a pas encore la méthode String.isEmpty().

1

Et si vous utilisez String.length() == 0 au lieu de String.isEmpty()?

1

Apache StringUtils est une très bonne façon de résoudre les problèmes de validation que vous implémentez. Néanmoins, il semble très étrange l'erreur que vous ne pouvez pas utiliser la méthode .isEmpty, quelle version du JDK utilisez-vous? Essayez de changer la version de votre JDK dans le classpath avec une version plus récente (JDK 7) ou au moins avec le JDK 6.

Rappelez-vous aussi que la chaîne vide est représentée par "", juste les guillemets sans espace. Il semble que la façon dont vous validez est acceptable. Vous pouvez essayer avec quelque chose comme ça.

if (d.lat.trim().isEmpty() || d.lat.length == 0) 
    latt = 9.0819990; 
else { 
    latt = Double.valueOf(d.lat.trim()).doubleValue(); 
    // or as mentioned before: latt = Double.parseDouble(d.lat.trim()); 
} 
Questions connexes