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)
在这种情况下,使用开关是不合理的.用一个简单的if
if (currentTime > 0 && currentTime < 25) {
hourlyData = weatherAPI.HourlyReport(currentTime);
setHourlyData();
} else {
System.out.println("Oops");
}
Run Code Online (Sandbox Code Playgroud)