2017-05-11 1 views
0

heute habe ich einige seltsame Fehler aufgetreten, aber ich gebe mein Bestes, um es zu erklären, weil ich es nicht lösen kann!Wenn-Methode gibt einen falschen Wert zurück nach dem Speichern und Laden Objekt

Zunächst ist das die Methode, die Probleme macht, ABER erst nach dem Laden eines Objekts über FileInputStream!

Der Fehler ist, dass es falsch statt liefert true Rückkehr, auch wenn das gesuchte Objekt ist im gespeichert Array

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; 
} 

Wenn ich ein Objekt bin Laden mit der folgende Methode wird die obere Methode nicht funktionieren: (Ich speichere auch dieses Objekt auf ähnliche Weise (schreibe stattdessen wenn Objekt laden))

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(); 
     } 

Das ist das Objekt, das ich das Speichern und Laden:

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

Und das ist das „carInv“ Array, wenn dies wichtig ist:

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

ich für diese riesige Menge an Code zu entschuldigen, aber ich don Ich weiß nicht wo der Fehler ist, also versuche ich dir alle wichtigen Informationen zu geben.

Also vielen Dank für das Lesen all dies, ich hoffe, Sie haben eine Idee oder eine Lösung für mich.

+5

Strings im Vergleich mit .equals nicht mit == –

+0

Okay danke, ich werde es versuchen, hatte noch nie Fehler vor der Serialisierung! – Urbs

+1

Mögliches Duplikat von [Wie kann ich Zeichenfolgen in Java vergleichen?] (Http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) –

Antwort

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; 
} 

Das Problem war, dass man für den Vergleich von String-Objekten nicht mit der equals Methode wurde. Sehen Sie sich diese post für weitere Erklärung

Verwandte Themen