Я нахожусь в процессе написания приложения для Android, которое тратит много времени на разрешение Локатора/Долгота на UTM coordinates. Мой текущий код для создания письма UTM зоны идет как этогоИзбегание нескольких утверждений if..elseif
if (Lat<-72) Letter='C';
else if (Lat<-64) Letter='D';
else if (Lat<-56) Letter='E';
else if (Lat<-48) Letter='F';
else if (Lat<-40) Letter='G';
else if (Lat<-32) Letter='H';
else if (Lat<-24) Letter='J';
else if (Lat<-16) Letter='K';
else if (Lat<-8) Letter='L';
else if (Lat<0) Letter='M';
else if (Lat<8) Letter='N';
else if (Lat<16) Letter='P';
else if (Lat<24) Letter='Q';
else if (Lat<32) Letter='R';
else if (Lat<40) Letter='S';
else if (Lat<48) Letter='T';
else if (Lat<56) Letter='U';
else if (Lat<64) Letter='V';
else if (Lat<72) Letter='W';
else Letter='X';
Хотя это работает это, кажется, ужасно неэффективный способ Дуных вещей. Большинство моих пользователей будут в зоне U, что означает, что, как утверждают, приложение выполняет 16 неудачных тестов if..elseif
, прежде чем устанавливать правильную букву зоны.
Легко установить прямо, отрегулировав порядок if..elseifs
? Правда, но я не могу не думать о том, что должен быть более чистый способ сделать это. Я все еще кое-что из новичка Java, поэтому, хотя экспериментировал с HashMaps и т. Д., Я не смог добиться больших успехов.
Возможно ли более элегантный подход?
Не беспокойтесь о производительности, если вы не знаете, что это узкое место, 16 else-ifs может быть очень дешевым по сравнению с другими вещами, которые делает ваше приложение. Я буду беспокоиться о читаемости и ремонтопригодности вашего решения. @AndyTurner предложил ответ, который касается обоих. – majk
Несвязанный: соглашение об именовании java предлагает вам написать имена переменных в нижнем регистре верблюда, с нижним регистром первого символа. [Подробная информация о сайте oracle] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html) – jhamon
Ваше изменение не имеет того же поведения, что и исходный код. Если 'lat' -75, он возвращает 'X' вместо 'C'. Я не знаю, что вы хотели, но это стоит проверить. Я не думаю, что редактирование когда-либо вернет «C». – Holloway