2016-11-16 1 views
-1

私はJavaで初めてオブジェクト指向プログラミングを利用していますが、今まで問題はありませんでした。内部で2つのクラスを参照することはできませんか?

私はCustomerクラス(無関係な詳細は省略)を有し

public class Customer { 

    public String bikesOwned; 

    public Customer() //Default Constructor 
    { 
    bikesOwned = ""; 
    } 

    public Customer(String aBike) //Parameterized Constructor 
    { 
    addBike(aBike); 
    } 


    public void addBike (String aBike) //Mutator Method for Bikes Owned 
    { 
     bikesOwned = aBike; 
    } 


    public String toString() 
    { 
    String returnBikes = bikesOwned.toString(); 
    return returnBikes; 
    } 
} 

をそして、私は私の自転車クラスからの情報を使用してバイクテスタークラスがあります。

public class bikeTester { 
    public static void main (String [] args) 
    { 
     Bicycle hisBike = new Bicycle(Bicycle.BikeType.Hybrid Bicycle.UserType.Men, 
      Bicycle.FrameMaterial.Carbon, Bicycle.BrakeType.Caliper, 
      Bicycle.Condition.Used, 29, 18, 10, "REI", "Black"); 

Customer don = new Customer(); 
     don.setFirstName("Don"); 
     don.setLastName("Norman"); 
     don.setPhoneNumber("804 123-4567"); 
     don.setEmailAddress("[email protected]"); 
     don.addBike(hisBike); 
     System.out.println(don); 
     System.out.println(); 
} 

私の問題は、そのとき、私ですコンパイルするとこのエラーが発生します:
"addBike(java.lang.String)in Customerは(自転車)には適用できません"。

addBike以外のすべての機能が動作している理由を理解できません。何か案は?すべての入力は非常に感謝しています。

+1

'addBike(java.lang.String)'。 '自転車'は '文字列'ではありません。 –

+0

あなたは "bike ** s ** Owned"によって暗示されている、複数のものを所有したい場合は無関係ですが、 'bikesOwned'は' List ' –

答えて

0

addBikeメソッドはStringパラメータを受け取りますが、Bicycleタイプを関数に送信しています。それは基本的にタイプの不一致です。

String値を関数に送信してみます。

または、addBikeメソッドのパラメータをBicycleタイプに変更します。

3

あなたaddBike方法はStringパラメータを期待:

public void addBike (String aBike) 

をしかし、あなたはそれをBicycleパラメータ送っている:

don.addBike(hisBike); 

どちらのメソッドStringを送信したり、Bicycleを受け入れるようにする方法を変更します(またはBicycleを受け入れる同じ名前の別のメソッドを追加します)。

それはあなたが、特にこの方法自体はいくつかの理由でStringである自身bikesOwnedと呼ばれる値を設定していることを考えると、StringBicycleの間で変換する方法を私には完全には明らかではありません。たぶんbikesOwnedは何らかの種類のリストまたはコレクションである必要がありますそのコレクションにアイテムを追加しますか?

このコードが最終的に望む論理は、あなた次第です。しかし、エラー自体はかなり簡単です。 StringBicycleは2つの異なるものです。

0

あなたはメソッドに

don.addBike(hisBike); 

から "自転車" のインスタンスを渡ししようとしている:

public void addBike (String aBike) 

文字列パラメータを取ります。

自転車のインスタンスを受け入れるようにメソッドを変更する(おそらく所有バイクの配列に追加する)か、たとえば自転車の名前を渡すだけの場合は、それに応じて呼び出しを変更します。

関連する問題