如何优化很多开关案例?

Gor*_*tle 0 java switch-statement

如何优化大量的开关案例?还有其他方法可以做我正在尝试做的事情吗?

我有一个时间滑块,这个滑块currentTime用当前滑块所在的值(1-24)更新变量并调用updateTime()方法.在这种方法中,我的切换情况为1 - 24(本例中仅为3).我可以用更简单的方式做到这一点,而不是制作24个开关盒吗?

private void updateTime() {
    switch (currentTime) {
        case 1:
            hourlyData = weatherAPI.HourlyReport(1);
            setHourlyData();
            break;
        case 2:
            hourlyData = weatherAPI.HourlyReport(2);
            setHourlyData();
            break;
        ...
        case 24:
            hourlyData = weatherAPI.HourlyReport(24);
            setHourlyData();
            break;
        default:
            System.out.println("Oops");
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

-

public Map HourlyReport(int hour) {
    Hourly hourly = new Hourly(fio);
    //In case there is no hourly data available
    if (hourly.hours() < 0) {
        System.out.println("No hourly data.");
    } else {
        hourlyData.put("Temp", hourly.getHour(hour).temperature()); // Temperature
        hourlyData.put("TempFeel", hourly.getHour(hour).apparentTemperature()); // Feel Temperature
        hourlyData.put("Humidity", hourly.getHour(hour).humidity()); // Humidity
        hourlyData.put("WindSpeed", hourly.getHour(hour).windSpeed()); // Wind Speed
        hourlyData.put("Precip", hourly.getHour(hour).precipProbability()); // Precipitation
        hourlyData.put("TimeStamp", hourly.getHour(hour).time());// TimeStamp
    }
    return hourlyData;
}
Run Code Online (Sandbox Code Playgroud)

Yas*_*jaj 6

在这种情况下,使用开关是不合理的.用一个简单的if

if (currentTime > 0 && currentTime < 25) {
    hourlyData = weatherAPI.HourlyReport(currentTime);
    setHourlyData();
} else {
    System.out.println("Oops");
}
Run Code Online (Sandbox Code Playgroud)