2016-07-29 39 views
-2

このクラスの要件は次のとおりです。整数を文字列として使用しますか?

は、以下のメンバ変数が含まれている必要がありエレベーターというクラスを書く:

  • currentFloor(int型)
  • elevatorState(int型の定数のいずれかIDLE、TO_SOURCE、またはTO_DESTINATION)
  • 要求(要求が処理されていることを表す要求オブジェクト、またはエレベーターがアイドル状態の場合はnull)

また、このクラスのために以下のことを提供しなければならない:

requestにヌルelevatorStateにIDLE、および各変数のcurrentFloor
1.アクセサとミューテータメソッドを設定し、デフォルトのコンストラクタ。 IDLE、TO_SOURCE、およびTO_DESTINATIONを表す最終変数。

相続人は私が持っているもの:

public class Elevator { 
    private int currentFloor; 
    private int elevatorState; 
    private Elevator request; 

    public Elevator(){ 
     currentFloor = 1; 
     elevatorState = ; //this is my problem 
     request = null; 
    } 
} 

イムそれは整数定数としてIDLE、TO_Source、およびTO_DESTINATIONを宣言したが、彼らは文字列ではないであろうと言うので、混乱?

いずれの説明も非常に役に立ちます。あなたはミスターファンシーパンツもとOOP 適切(教えることがないかもしれない何か)を使用したい場合は、しかし、

public static final int IDLE = 0; 
public static final int TO_SOURCE = 1; 
public static final int TO_DESTINATION = 2; 

public Elevator(){ 
    currentFloor = 1; 
    elevatorState = IDLE; //this is no longer my problem 
    request = null; 
} 

:で求められているもの基本的に

+3

彼らの値は重要ではありません。これは単なる異なる状態を区別する方法です。基本的に[enum](https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)と同じです(実際はここで正しいツールです)。理論的には、3つの値のそれぞれを一意に識別できる限り、任意のデータ型を使用できます。 – resueman

+4

これはエレベーターの状態でEnumを実際に使用するのに最適な時間のようです。 –

+0

これらは文字列ではありません。他の場所で定義する定数です。 'final int IDLE = 1'または何でも。 –

答えて

3

は、3つのint型の定数ですEnumを使うことができます!あなたのクラスで次に

public enum ElevatorState { 
    IDLE, TO_SOURCE, TO_DESTINATION 
} 

public class Elevator { 
    private ElevatorState elevatorState; 
    private int currentFloor; 
    private Elevator request; 

    public Elevator() { 
     currentFloor = 1; 
     elevatorState = ElevatorState.IDLE; //this is no longer my problem 
     request = null; 
    } 
} 

私のJavaは少し錆びですが、これは使用しても大丈夫でなければなりません。さてここで

+0

* "これは、列挙型に矛盾しています。もはや私の問題ではありません "* +1。実際には、enumを示唆する+1は+2にするのですか? – Andreas

+0

@Andreasそれは良い音とバイナリで2ですので、10になります。 ) –

+1

Drew、各列挙型は、enumクラスの保証されたユニークなインスタンスである*オブジェクト*ですが、順序の位置はありますが – Andreas

0

は、問題の可能なソリューションです。

public class Elevator 
{ 
    private static final int IDLE = 0; 
    private static final int TO_SOURCE = 1; 
    private static final int TO_DESTINATION = 2; 

    private int currentFloor; 
    private int elevatorState; 
    private Elevator request; 

    public Elevator(){ 
     currentFloor = 1; 
     elevatorState = IDLE; //this is my problem 
     request = null; 
    } 

    public int getCurrentFloor() { 
     return currentFloor; 
    } 

    public void setCurrentFloor(int currentFloor) { 
     this.currentFloor = currentFloor; 
    } 

    public int getElevatorState() { 
     return elevatorState; 
    } 

    public void setElevatorState(int elevatorState) { 
     if(elevatorState == IDLE) setRequest(null); 
     this.elevatorState = elevatorState; 
    } 

    public Elevator getRequest() { 
     return request; 
    } 

    public void setRequest(Elevator request) { 
     this.request = request; 
    } 


} 
関連する問題