我是编程和Android开发的新手,我正在尝试为长度单位转换创建一个应用程序.我使用了两个微调器(从单元到单元),所以我需要检查用户在两个微调器中选择了什么,然后返回值.我的问题是如果声明我已经很长,所以我想知道是否有更好的解决方案.
抱歉我的英语不好,我希望你明白我的意思.
这是长度的函数:
public double lengthConversion() {
double res = 0.0;
num = Double.parseDouble(editTextNum.getText().toString());
// first spinner is mm, second spinner is mm
if (posFrom == 0 && posTo == 0) {
res = num;
} else if (posFrom == 0 && posTo == 1) { //second spinner is cm
res = num / 10;
} else if (posFrom == 0 && posTo == 2) { // dm
res = num / 100;
} else if (posFrom == 0 && posTo == 3) { // m
res = num / 1000;
} else if (posFrom == 0 && posTo == 4) { // km
res = num / 1000000;
}
if (posFrom == 1 && posTo == 0) {
....
} else if (posFrom == 1 && posTo == 1) {
....
} else if (posFrom == 1 && posTo == 2) {
....
} else if (posFrom == 1 && posTo == 3) {
....
} else if (posFrom == 1 && posTo == 4) {
....
}
.
.
.
if (posFrom == 4 && posTo == 0) {
...
} else if (posFrom == 4 && posTo == 1) {
...
} else if (posFrom == 4 && posTo == 2) {
...
} else if (posFrom == 4 && posTo == 3) {
...
} else if (posFrom == 4 && posTo == 4) {
...
}
return res;
}
Run Code Online (Sandbox Code Playgroud)
这就是我使用的字符串数组:
<string-array name="array_length">
<item>mm</item>
<item>cm</item>
<item>dm</item>
<item>m</item>
<item>km</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)
在你的第一else if棵树中,posTo实际上只是十的幂,所以进行计算而不是通过所有这些if else语句.
if (posFrom == 0)
res = num / Math.Pow(10, posTo);
Run Code Online (Sandbox Code Playgroud)
你所有的其他单位:
<string-array name="array_length">
<item>mm</item>
<item>cm</item>
<item>dm</item>
<item>m</item>
<item>km</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)
只是对10的幂的变化,所以执行进一步的计算根据所选单位调整你的值(与参考单位相比,可能是米),你应该不需要超过5个案例或者如果没有.
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |