如何在Java中管理状态更改

use*_*256 2 java state if-statement

public void manage()
    {
        double speed = getSpeedfromVehicle();

        if(speed >=0 && speed <= 10)
        {
            System.out.println("Low Speed mode");
        }
        else if(speed > 10 && speed < 60)
        {
            System.out.println("Medium Speed Mode");
        }
        else if(speed >= 60)
        {
            System.out.println("High Speed Mode");
        }

    }
Run Code Online (Sandbox Code Playgroud)

当车辆开始移动时,我的管理方法被调用用于每个速度变化.如果速度保持在一个类别(0到10)中,我只需要打印一次输出语句,即使对于速度0到10,manage()被称为无限次,这也适用于其他速度范围.它也应该切换到其他速度范围,并且应该只打印一次速度范围.

Rus*_*ton 6

您需要有一个变量来检查当前速度模式.我会考虑使用带有我的速度状态的枚举类作为值.每次速度范围更改时,都会更新本地SpeedState枚举值并在manage()方法中对其进行验证.

在我的头顶,它看起来像以下......

public enum SpeedState {
    LOW, MEDIUM, HIGH
}    


public class Drive{
    private SpeedState state;

    // Supporting code, loops, etc

    public void manage(){
        double speed = getSpeedfromVehicle();

        if((speed >=0 && speed <= 10) && state != SpeedState.LOW)
        {
           state = SpeedState.LOW;
           System.out.println("Low Speed mode");
        }
        else if((speed > 10 && speed < 60) && state != SpeedState.MEDIUM)
        {
           state = SpeedState.MEDIUM;
           System.out.println("Medium Speed Mode");
        }
        else if((speed >= 60) && state != SpeedState.HIGH)
        {
           state = SpeedState.HIGH;
           System.out.println("High Speed Mode");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)