2011-08-13 32 views
0

私は別のクラス(HotelRoom)から継承しているクラス(スイート)を作成しています。 HotelRoomクラスは、引数(int)を必要とするコンストラクタを持っています。スイートIのコンストラクタでは、super(room)と呼ばれるコンストラクタがあります。 HotelRoomはうまくいきますが、Suiteはコンストラクターエラーを返します。どんな助けでも大歓迎です。ここでは以下の私のコードは次のとおりです。Javaがシンボルを見つけることができません:コンストラクタエラー

public class HotelRoom 
{ 
    private int roomNumber; 
    protected double nightlyRate; 
    private final int maxRoomNumber = 999; 
    boolean didEnterCorrectRoomNumber = false; 

    public HotelRoom(int room) 
    { 

     if (room > 0 && room <= 299) 
     { 
      nightlyRate = 69.95; 
      didEnterCorrectRoomNumber = true; 
      //return didEnterCorrectRoomNumber; 
     } 
     else if (room > 299 && room <= maxRoomNumber) 
     { 
      nightlyRate = 89.95; 
      didEnterCorrectRoomNumber = true; 
      //return didEnterCorrectRoomNumber; 
     } 
     else 
     { 
      //return didEnterCorrectRoomNumber; 
     } 
    } 

    public int getRoomNumber() 
    { 
     return roomNumber; 
    } 

    public double getNightlyRate() 
    { 
     return nightlyRate; 
    } 
    public boolean getDidEnterCorrectRoomNumber() 
    { 
     return didEnterCorrectRoomNumber; 
    } 

    public void displayRoom() 
    { 
     System.out.println("Room Number: " + roomNumber); 
     System.out.format("Cost per Night: $%.2f%n", nightlyRate); 
    } 

} 

と私のサブクラス:

public class Suite extends HotelRoom 
{ 
    private final double suiteSurchargeRate = 40.00; 
    private double nightlyRateWithSuite; 

    public Suite (int room) 
    { 
     super(room); 
     //boolean didEnterCorrectRoomNumber = super.getDidEnterCorrectRoomNumber(); 
     nightlyRateWithSuite = super.getNightlyRate() + suiteSurchargeRate; 
     //return didEnterCorrectRoomNumber; 
    } 

    public void displayRoom() 
    { 
     super.displayRoom(); 
     System.out.format("Suite Surcharge: $%.2f%n", suiteSurchargeRate); 
     System.out.format("Total Cost per Night: $%.2f%n", nightlyRateWithSuite); 
    } 

} 

正確なコンパイラエラー:

 
MacBook-Air:HotelRoom Nick$ javac Suite.java 
Suite.java:12: cannot find symbol 
symbol : constructor HotelRoom(int) 
location: class HotelRoom 
    super(room); 
    ^
1 error 

私が保存され、再コンパイルの両方に数回、私はちょうど同じを取得しています結果。 HotelRoomはうまくコンパイルされますが、Suiteはコンパイルしません。それらはディレクトリ内の唯一の2つのJavaファイルであるため、間違ったクラスを呼び出す際に問題はありません。 :)

+0

はあなたが取得しているエラーメッセージのテキストを投稿できますか? –

+0

投稿したコードはうまくコンパイルされます。私はあなたが 'スーパー(部屋) 'を持っていなかったときにあなたはそのエラーがあったと思う。 –

+0

コードは私にとってはうまく見えます。 Suiteをコンパイルする前に、HotelRoomを再コンパイルするのを忘れていないのですか?他にもHotelRoomクラスがありますか?コンパイラからの正確なエラーメッセージは何ですか? –

答えて

0

あなたのMacのJava設定に関係していると思います。それはコンパイルし、私のために正常に動作のLinuxを実行しているPC上でJava 1.6を使用して、メインクラス以下でテスト

public class Main { 
    public static void main(String[] args) {   
     Suite suite = new Suite(10); 
     suite.displayRoom();  
    } 
} 

出力:

Room Number: 0 
Cost per Night: $69.95 
Suite Surcharge: $40.00 
Total Cost per Night: $109.95 
関連する問題