2017-05-11 1 views
0

今日、私はいくつかの奇妙なエラーが発生しましたが、解決できないので説明してくれます!オブジェクトを保存してロードした後にIf-Methodが間違った値を返す

まず、FileInputStream経由でオブジェクトをロードした後に問題が発生するメソッドがあります。

エラーが検索対象保存され、アレイ内の場合でも、それはを返す偽代わりの返すということです

私は、オブジェクトをロードしています
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; 
} 

次のメソッドは、上のメソッドは動作しません:(私は同様の方法でこのオブジェクトを保存しています(オブジェクトの代わりに書き込み)

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(); 
     } 
私はこのコードの膨大な量のために謝るが、私ドン

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

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

そして、これが重要な場合は、「carInv」アレイのthats:私は保存と読み込みてるオブジェクトザッツ

エラーがどこにあるのかわからないので、私はあなたに重要な情報をすべて提供しようとしています。

このすべてをお読みいただきありがとうございます。私にはアイデアや解決策がありますように願っています。

+5

文字列は.equalsではない== –

+0

ありがとう、私はそれを試してみるつもりです、シリアル化の前にエラーがあったことはありません! – Urbs

+1

[Javaの文字列を比較するにはどうすればいいですか?](http://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java) –

答えて

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

問題は、Stringオブジェクトを比較するためのequals方法を使用していなかったということでした。さらに詳しい説明はpostをご覧ください

関連する問題