Ma méthode est censée comparer le nom d'un chat de l'ensemble du tableau de chat.
Ceci est parce que mon tableau aura des nuls entre objets créés. p>
par exemple [0 (chat 0), 1 (Cat 1), 2 (Cat 2), 3 (NULL vide), 4 (CAT 4), 5 (CAT 5)] P>
Je pense que la raison pour laquelle je reçois une exception de pointeur nulle est parce que je Essayez de retourner une nulle et de le comparer au param (nom de catername de chaîne). P>
Comment puis-je éviter cela tout en recherchant dans l'ensemble de la matrice? P>
/** * @param catName to search for cat name */ public void searchCatByName(String catName) { if (cats[0] != null) { if(catName != null) { int index = 0; while (index < cats.length) { if(cats[index].getName() != catName) { if(index == cats.length - 1) { System.out.println(catName + " was not found in the cattery."); break; } index++; } else { System.out.println(cats[index].getName() + " is in cage " + index); break; } } } } }
3 Réponses :
Vous devez vérifier si l'élément de tableau est null avant de comparer les noms avec chaîne Le bon état est: P > égale code> méthode afin de:
Cat cat = cats[index];
if(cat != null && !cat.getsName().equals(catName)) { /* logic */ }
Ne peut pas chats [index] code> être null qui causerait une NPE sur
... getname () code>?
@Mikesamuel absolument correct, j'ai corrigé le code.
Vérifiez si la valeur est égale à null. S'il n'est pas égal à NULL, faites votre état. J'ai fait un exemple dans le code ci-dessous
String arr[] = new String[]{"tom","blake",null,"jerry"}; String fider = "jerry"; for (int i = 0; i < arr.length; i++) { if (arr[i] != null) if (arr[i].equals(fider)) System.out.println(i); // Prints 3 }
J'ai ajouté si (CATS [Index] .getName ()! = Null
Utilisez une logique simple. Vérifiez d'abord l'élément de tableau si NULL, alors sinon NULL Comparez le nom du chat. Voici un exemple sur la façon dont vous devriez faire une vérification nulle et comparer des chaînes.
public class Cat { public static void main(String[] args) { String catName = "Cat3"; String[] cats = new String[] {"Cat1","Cat2","Cat3", "", "Cat4"}; searchCatByName(catName, cats); } public static void searchCatByName(String catName, String[]cats) { int catCounter = 0; for(int i=0;i<cats.length;i++){ if (cats[i] != null){ if(catName.equals(cats[i])){ System.out.println(catName + " is in cage no " + (i+1)); catCounter++; } } } if(catCounter == 0){ System.out.println(catName + " was not found in the cattery."); } } }
Je comprends maintenant. J'essayais d'accéder à un objet NULL et de renvoyer le nom. Pour éviter la NPE, j'ai besoin d'abord vérifier si l'objet est null, avant de vérifier le nom. Merci +1
@Grantlee merci .. ajouté le code de chat non trouvé également.