私は、緯度/経度をUTM coordinatesに解決するのに多くの時間を費やすAndroidアプリを開発中です。これは、ドン物事の恐ろしく非効率的な方法であると思わ働く一方で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';
のようになります。私のユーザーのほとんどはZone Uに入ります。これは、正しいゾーン文字を設定する前に、アプリケーションが1636の失敗したテストを実行していることを意味します。
if..elseifs
の順番を調整して簡単に設定できますか?本当ですが、これを行うにはよりクリーンな方法が必要であると考えることを助けることはできません。私はまだJavaの初心者の何かですので、HashMapsなどで実験していますが、私は多くの進歩を遂げていません。
より洗練されたアプローチが可能ですか?
一部クランプと、おそらく
これはボトルネックであることが分かっていない限り、アプリケーションが実行している他のものと比較して16のelse-ifsが非常に安い可能性があります。私はあなたのソリューションの可読性と保守性について心配しています。 @AndyTurnerは両方の問題に対処する答えを提案した。 – majk
とは無関係:Java命名規則では、変数名を小文字の小文字の小文字の小文字の最初の文字で記述することが示唆されています。 [Oracle Webサイトに関する詳細情報](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html) – jhamon
編集内容は元のコードと同じです。 'lat'が-75の場合、 'C'ではなく 'X'を返します。私はあなたが望んでいたか分からないが、チェックする価値がある。私は編集が「C」を返すとは思わない。 – Holloway