我想在Code
中存储以下数据以进行比较基本方向 学位方向
N 348.75 - 11.25 NNE 11.25 - 33.75 NE 33.75 - 56.25 ENE 56.25 - 78.75 E 78.75 - 101.25 ESE 101.25 - 123.75 SE 123.75 - 146.25 SSE 146.25 - 168.75 S 168.75 - 191.25 SSW 191.25 - 213.75 SW 213.75 - 236.25 WSW 236.25 - 258.75 W 258.75 - 281.25 WNW 281.25 - 303.75 NW 303.75 - 326.25 NNW 326.25 - 348.75
OR
500 chance_of_rain
600 chance_of_snow
960 chance_of_storm
801 cloudy
615 flurries
741 fog
721 haze
611 icy
701 mist
804 mostly_cloudy
800 mostly_sunny
803 partly_cloudy
500 rain
711 smoke
601 snow
960 storm
800 sunny
200 thunderstorm
在Android中存储此类 2-D数组数据信息的最佳方式是什么?要么是 res ,要么是 src
注意: -
我只是好奇什么是存储这种常量数据的最佳方式?
答案 0 :(得分:2)
我不确切知道,但你可以使用像
这样的东西 来自Java 6的 NavigableMap。其中有ceilingEntry()
和floorEntry()
个函数。
答案 1 :(得分:2)
private static final String[] DIRECTIONS = {
"N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE",
"S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"
};
String degreeToName(double degree) {
int corner = (int)((degree + 11.25) / 22.5) % 16; // Or % DIRECTIONS.length
return DIRECTIONS[corner];
}
String degreeToRange(double degree) {
int corner = (int)((degree + 11.25) / 22.5) % 16; // Or % DIRECTIONS.length
double lowerBound = corner * 22.5 - 11.25 + (corner == 0 ? 360 : 0);
double upperBound = corner * 22.5 + 11.25;
return String.format("%.2f - %.2f", lowerBound, upperBound);
}
计算似乎最适合。
根据情况强化代码:
while (degree < 0) degree += 360;
为了完整起见,添加了degreeToRange
。