解决方案很长(如果声明)

Ada*_*dam 0 android

我是编程和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)

Rob*_*vey 5

在你的第一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个案例或者如果没有.