首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何优化大量的开关情况?

如何优化大量的开关情况?
EN

Stack Overflow用户
提问于 2016-03-05 20:30:18
回答 4查看 904关注 0票数 0

我如何优化有很多开关箱?还有别的方法来做我想做的事吗?

我有一个时间滑块,这个滑块用当前滑块所在的值(1-24)更新变量currentTime,并调用updateTime()方法。在这种方法中,我有1- 24的开关情况(在本例中只有3)。我可以用一种简单得多的方法来代替24个开关箱吗?

代码语言:javascript
运行
复制
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;
    }
}

--

代码语言:javascript
运行
复制
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;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-05 20:33:41

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

代码语言:javascript
运行
复制
if (currentTime > 0 && currentTime < 25) {
    hourlyData = weatherAPI.HourlyReport(currentTime);
    setHourlyData();
} else {
    System.out.println("Oops");
}
票数 6
EN

Stack Overflow用户

发布于 2016-03-05 20:40:03

我要先验证一下

代码语言:javascript
运行
复制
private void updateTime() {
    if (currentTime < 1 || currentTime > 24) 
        throw new IllegalStateException("currentTime: " + currentTime);

    hourlyData = weatherAPI.HourlyReport(currentTime);
    setHourlyData();
}
票数 2
EN

Stack Overflow用户

发布于 2016-03-05 20:35:22

您可以使用一个简单的if语句来验证currentTime的值,并将其传递给weatherAPI.HourlyReport

代码语言:javascript
运行
复制
private void updateTime() {
    if (currentTime >= 1 || currentTime <= 24) {
        hourlyData = weatherAPI.HourlyReport(currentTime);
        setHourlyData();
    } else{
        System.out.println("Oops");
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35819508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档