Java 当使用微调器的值转换十进制值时,我有一个错误

Java 当使用微调器的值转换十进制值时,我有一个错误,java,android,Java,Android,我有一个简单的转换器应用程序。微调器具有相同的单位。我认为我写的所有东西都是正确的,但只有在注释代码的其余部分并且只使用第一种情况下,它才起作用,在第一种情况下,我将立方毫米(mm3)转换为第二个微调器中的任何单位。当我也包括其他情况时,它会写入不正确的值 需要知道的几件事:“valv1”是一个编辑文本,我在其中输入数字值,“valv3”是一个简单的文本视图,我在其中写入该值。我不想让用户编辑结果值,因为我不知道如何进行双向转换 这是我从我的微调器定义位置变量的地方,我知道我可以直接使用“pos

我有一个简单的转换器应用程序。微调器具有相同的单位。我认为我写的所有东西都是正确的,但只有在注释代码的其余部分并且只使用第一种情况下,它才起作用,在第一种情况下,我将立方毫米(mm3)转换为第二个微调器中的任何单位。当我也包括其他情况时,它会写入不正确的值

需要知道的几件事:“valv1”是一个编辑文本,我在其中输入数字值,“valv3”是一个简单的文本视图,我在其中写入该值。我不想让用户编辑结果值,因为我不知道如何进行双向转换

这是我从我的微调器定义位置变量的地方,我知道我可以直接使用“pos1”和“pos2”,但这样对我来说比较容易,我是一个完全的初学者

    switch (a){
case 1: if(b==1){ double mm31= Double.valueOf(valv1.getText().toString());
                    valv3.setText(String.valueOf(mm31));
                }
        if(b==2){ double mm31= Double.valueOf(valv1.getText().toString());
                    double cm3= mm31*0.001;
                    valv3.setText(String.valueOf(cm3));
                }
        if(b==3){ double mm31= Double.valueOf(valv1.getText().toString());
            double dm3= mm31*0.000001;
            valv3.setText(String.valueOf(dm3));
        }
        if(b==4){ double mm31= Double.valueOf(valv1.getText().toString());
            double m3= mm31*0.000000001;
            valv3.setText(String.valueOf(m3));
        }
        if(b==5){ double mm31= Double.valueOf(valv1.getText().toString());
            double ml= mm31*0.001;
            valv3.setText(String.valueOf(ml));
        }
        if(b==6){ double mm31= Double.valueOf(valv1.getText().toString());
            double cl= mm31*0.0001;
            valv3.setText(String.valueOf(cl));
        }
        if(b==7){ double mm31= Double.valueOf(valv1.getText().toString());
            double dl= mm31*0.00001;
            valv3.setText(String.valueOf(dl));
        }
        if(b==8){ double mm31= Double.valueOf(valv1.getText().toString());
            double l= mm31*0.000001;
            valv3.setText(String.valueOf(l));
        }
        if(b==9){ double mm31= Double.valueOf(valv1.getText().toString());
            double hl= mm31*0.00000001;
            valv3.setText(String.valueOf(hl));
        }
这将处理我的第一个微调器中的第一个值,并且工作正常。但是,当我为第一个微调器的其他位置添加其余代码时,就会出现问题

case 2:
    if(b==1){ double cm31= Double.valueOf(valv1.getText().toString());
    double mm32= cm31*1000;
    valv3.setText(String.valueOf(mm32));
    }
    if(b==2){ double cm31= Double.valueOf(valv1.getText().toString());
    double cm32= cm31*1;
    valv3.setText(String.valueOf(cm32));
    }
    if(b==3){ double cm31= Double.valueOf(valv1.getText().toString());
    double dm3= cm31*0.001;
    valv3.setText(String.valueOf(dm3));
    }
    if(b==4){ double cm31= Double.valueOf(valv1.getText().toString());
    double m3= cm31*0.000001;
    valv3.setText(String.valueOf(m3));
    }
    if(b==5){ double cm31= Double.valueOf(valv1.getText().toString());
    double ml= cm31*1;
    valv3.setText(String.valueOf(ml));
    }
    if(b==6){ double cm31= Double.valueOf(valv1.getText().toString());
    double cl= cm31*0.1;
    valv3.setText(String.valueOf(cl));
    }
    if(b==7){ double cm31= Double.valueOf(valv1.getText().toString());
    double dl= cm31*0.01;
    valv3.setText(String.valueOf(dl));
    }
    if(b==8){ double cm31= Double.valueOf(valv1.getText().toString());
    double l= cm31*0.001;
    valv3.setText(String.valueOf(l));
    }
    if(b==9){ double cm31= Double.valueOf(valv1.getText().toString());
    double hl= cm31*0.00001;
    valv3.setText(String.valueOf(hl));
    }


  case 3:   
    if(b==1){ double dm31= Double.valueOf(valv1.getText().toString());
    double mm32= dm31*1000000;
    valv3.setText(String.valueOf(mm32));
    }
    if(b==2){ double dm31= Double.valueOf(valv1.getText().toString());
    double cm32= dm31*1000;
    valv3.setText(String.valueOf(cm32));
    }
    if(b==3){ double dm31= Double.valueOf(valv1.getText().toString());
    double dm3= dm31*1;
    valv3.setText(String.valueOf(dm3));
    }
    if(b==4){ double dm31= Double.valueOf(valv1.getText().toString());
    double m3= dm31*0.001;
    valv3.setText(String.valueOf(m3));
    }
    if(b==5){ double dm31= Double.valueOf(valv1.getText().toString());
    double ml= dm31*1000;
    valv3.setText(String.valueOf(ml));
    }
    if(b==6){ double dm31= Double.valueOf(valv1.getText().toString());
    double cl= dm31*100;
    valv3.setText(String.valueOf(cl));
    }
    if(b==7){ double dm31= Double.valueOf(valv1.getText().toString());
    double dl= dm31*10;
    valv3.setText(String.valueOf(dl));
    }
    if(b==8){ double dm31= Double.valueOf(valv1.getText().toString());
    double l= dm31*1;
    valv3.setText(String.valueOf(l));
    }
    if(b==9){ double dm31= Double.valueOf(valv1.getText().toString());
    double hl= dm31*0.01;
    valv3.setText(String.valueOf(hl));
    }
事情还在继续。。直到最后一个案例-案例9

我的微调器值如下所示:

 <string-array name="volume1">
    <item>mm3</item>
    <item>cm3</item>
    <item>dm3</item>
    <item>m3</item>
    <item>ml</item>
    <item>cl</item>
    <item>dl</item>
    <item>l</item>
    <item>hl</item>
</string-array>

mm3
立方厘米
dm3
m3
毫升
氯
dl
L
hl

看起来您的switch语句写得不正确。 在每个案例的结尾都应该有一个break语句。 在这里查看java switch语句的语法:

你到底想做什么,你的问题还不太清楚。谢谢,你完全救了我。我要去把我的眼睛修好。。。非常感谢你!