I am in the process of writing an Android app that spends a great deal of time resolving Latitude/Longitude to UTM coordinates. My current code for establishing the UTM Zone letter goes like this
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';
Whilst this works it appears to be a horribly inefficient way of dong things. Most of my users will be in Zone U which means as things stand the app is performing 16 failed if..elseif tests prior to establishing the right zone letter.
Easily set right by adjusting the order of the if..elseifs? True but I cannot but help thinking that there has got to be a cleaner way to do this. I am still something of a Java newbie so although have experimented with HashMaps etc I have failed to make much headway.
Is a more elegant approach possible?
latis -75 it returns 'X' instead of 'C'. I don't know which you wanted but it's worth checking. I don't think the edit will ever return 'C'.