2012-10-12 6 views
1

J'utilise le code ci-dessous pour vérifier si la chaîne est videComment vérifier si String est vide?

if(!Index2.toString().isEmpty()){ 
    .... 
} 

Mais je lance en erreur suivant

java.lang.NullPointerException 
+0

'Index2.toString() isEmpty()' doit être 'Index2 = null && Index2.toString() isEmpty()' –

+0

Bonjour, Index2 Est-ce votre propre classe? Vous avez probablement redéfini la méthode toString() et elle renvoie null maintenant. Qui à son tour provoque NPE. Je ne pense pas que c'est une bonne idée d'avoir le code blahblahblah.toString(). IsEmpty(), pourriez-vous s'il vous plaît souligner la racine du problème, il pourrait probablement être le problème avec la méthode que vous avez choisie, par exemple, vous essayez de vérifier si l'objet index est rempli - ce ne serait pas une bonne idée de vérifier la chaîne, il serait préférable d'avoir une méthode utilitaire ou une méthode d'instance qui vérifie. – user486075

Répondre

4

votre variable Index2 a une valeur null. C'est pourquoi vous obtenez l'erreur. Plus précisément, l'erreur est ici:

Index2.toString() 

Si l'on suppose votre variable Index2 est différent de null, votre code fonctionnera. Pour que votre code fonctionne, vous pouvez valider que votre Index2 est différent de null ou ajouter un bloc try/catch qui gère NullPointerException.

Première façon:

if(Index2 != null && !Index2.toString().isEmpty()){ 
    //... 
} 

Deuxième moyen:

try { 
    if(!Index2.toString().isEmpty()){ 
     //... 
    } 
} catch (NullPointerException npe) { 
    //handle the Exception... 
} 

à mon humble avis, j'utiliseraient la première manière.

+0

plus d'un commentaire que de répondre, tho ... – Don

+0

@Blaine Je suis en train d'éditer la réponse :). –

+0

@EmertanaEm Utiliser la gestion des exceptions uniquement dans des cas exceptionnels, cela prend du temps et ne doit pas être utilisé dans le flux normal de l'application. –

2

Vérifiez également Null.

if(Index2!=null && !Index2.toString().isEmpty()){ 
    .... 
} 
0

Voici comment vous devriez vérifier vide pour votre cas:

if(Index2 == null || Index2.toString() == null || 
    Index2.toString().length() == 0) 
    // it is empty 
0

Le code suivant:

if(Index2!=null){ 
    if(!Index2.toString().isEmpty()){ 
    .... 
    } 
} 
2

Il y a une classe StringUtils dans le package apache.commons qui a beaucoup de méthodes utiles, telles que

StringUtils.isEmpty(theString) 

Qui fera les deux comparaisons,! = Null et isEmpty et regarde mieux.

0

isEmpty() et null n'a rien à voir avec l'un l'autre. Premier vérifie la valeur de Chaîne si son égale à "" - OU vous pouvez dire qu'il retournera vrai si sa longueur est seulement et seulement 0. Et le second vérifie son initialisation.

Vous devriez vérifier ces deux conditions si cela est nécessaire, comme,

if (str! = Null & &! Str.isEmpty()) {...}

OU

if (str! = null & &! str.equals ("")) {... }

OU utiliser dans votre cas,

si (index2! = Null) { if (index2.toString()! = Null & &! Index2.toString(). IsEmpty()) {...}}

+0

si vous créez votre chaîne à partir de n'importe quel autre objet alors vous pouvez utiliser 'if (index2! = Null) { si (index2.toString()! = Null &&! Index2.toString(). IsEmpty()) {. ..} } ' –

+0

@Emertana Em J'ai fait exactement la même chose dans le commentaire. Mais j'ai donné quelques explications aussi. C'est pourquoi avez-vous défait Accepter ...? –

3

Vérifier chaîne ne pas être nulle et vérifier l'espace vide dans une chaîne parce que même si nous avons un espace dans une chaîne comme myString = » « ; myString.isEmpty() retournera false. alors s'il vous plaît considérer le cas ci-dessus, je proposerai que:.!.

if (myString != null && myString.trim().length() != 0) 
       return true;