整数常量作为字符串?

Integer constants as strings?

这个class的要求如下:

Write a class called Elevator that should contain the following member variables:

  • currentFloor (int)
  • elevatorState (an int constant, either IDLE, TO_SOURCE, or TO_DESTINATION)
  • request (Request object representing the request being handled or null if the Elevator is idle)

You should also provide for this class the following:

A default constructor that sets request to null, elevatorState to IDLE, and currentFloor to 1.
Accessor and mutator methods for each variable. Final variables to represent IDLE, TO_SOURCE, and 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 声明为整数常量,但它们不是字符串吗?

任何澄清都会很有帮助。

基本上,要求的是3个int常量:

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

但是,如果您想成为花哨的先生并正确使用 OOP(可能无法教授的东西),您可以使用枚举!

public enum ElevatorState {
    IDLE, TO_SOURCE, TO_DESTINATION
}

然后在你的 class:

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有点生疏了,不过这个用起来应该没问题。

好吧,这里有一个可能的解决方案:

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


}