2017-05-11 2 views
0

aujourd'hui j'ai eu une erreur étrange, mais je vais faire de mon mieux pour l'expliquer parce que je ne peux pas le résoudre! Tout d'abord, c'est la méthode qui pose problème, MAIS seulement après le chargement d'un objet via FileInputStream!If-Method retourne une valeur erronée après l'enregistrement et le chargement de l'objet

L'erreur est qu'il retourne false au lieu de retourner vrai, même lorsque l'objet recherché est dans le tableau sauvé

public boolean isCarOwned(String pName) { //find Car in Array with pName 
    for(int x = 0; x < carCount; x++) {  // carCount = array length 
     if(carInv[x] != null) {    //check if array is empty 
      if(carInv[x].getName() == pName) { //check if car in array has pName 
       return true;     
      } 
     } 
    } 
    return false; 
} 

Quand je suis chargement d'un objet avec la méthode suivante la méthode supérieure ne fonctionnera pas: (je sauvegarde aussi cet objet avec un moyen similaire (écrire à la place si charger l'objet))

ObjectInputStream invLoad; 
     try { 
      invLoad = new ObjectInputStream(new FileInputStream("save/inv_data.bin")); 
      Main.inv = (Inventory) invLoad.readObject(); 
      invLoad.close(); 
     } catch (FileNotFoundException e1) { 
      e1.printStackTrace(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } catch (ClassNotFoundException e1) { 
      e1.printStackTrace(); 
     } 

thats le objet que je suis épargne et chargement:

public Car(String pName, int pSpeed, int pSpace, int pPrice, String pCarIcon) { 
name = pName; 
speed = pSpeed; 
space = pSpace; 
price = pPrice; 
carIcon = new ImageIcon(pCarIcon); } 

Et c'est le tableau "carInv" si cela est important:

private Car carInv[] = new Car[10]; 

Je présente mes excuses pour cette énorme quantité de code mais je ne Je ne sais pas où est l'erreur, alors j'essaie de vous donner toutes les informations importantes.

Merci beaucoup d'avoir lu tout cela, j'espère que vous avez une idée ou une solution pour moi.

+5

Cordes comparées avec .equals pas avec == –

+0

Bon merci, je vais essayer, jamais eu d'erreurs avant la sérialisation! – Urbs

+1

Copie possible de [Comment comparer les chaînes en Java?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) –

Répondre

2
public boolean isCarOwned(String pName) { //find Car in Array with pName 
    for(int x = 0; x < carCount; x++) {  // carCount = array length 
     if(carInv[x] != null && carInv[x].equals(pName)) { // if x-th value is not null and is equal to pName 
       return true; 
     } 
    } 
    return false; 
} 

La question est que vous n'utilisez pas la méthode equals pour comparer des objets String. Jetez un oeil à ce post pour plus d'explications