Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android java:使用seekbar';正确地进行数值计算_Java_Android_Seekbar - Fatal编程技术网

Android java:使用seekbar';正确地进行数值计算

Android java:使用seekbar';正确地进行数值计算,java,android,seekbar,Java,Android,Seekbar,我目前在我的应用程序中使用了两个seekbar。有两个给我带来麻烦。我将这两个seekbar的最大值设置为10 我将使用seekbars的值来更改代码中的2个数字 基本上,我有两个变量,它们有一个范围。一种是蛋白质mod,可以是0.8到1.0之间的任意值,而脂肪mod可以是0.3到0.6之间的任意值。我从seekbar中获取progressValue,并将该值转换为存储为double的百分比,然后计算公式 proteinmod = proteinmod = 0.8+(progressValue/

我目前在我的应用程序中使用了两个seekbar。有两个给我带来麻烦。我将这两个seekbar的最大值设置为10

我将使用seekbars的值来更改代码中的2个数字

基本上,我有两个变量,它们有一个范围。一种是蛋白质mod,可以是0.8到1.0之间的任意值,而脂肪mod可以是0.3到0.6之间的任意值。我从seekbar中获取progressValue,并将该值转换为存储为double的百分比,然后计算公式

proteinmod = proteinmod = 0.8+(progressValue/10)*0.2;
fatmod = 0.3+(progressValue/10)*0.3;
我的问题:seekbar只是半功能的。当一直向左时,它们是预期范围的最小值-但保持该值,直到seekbar完全达到最大值,然后将proteinmod和fatmod设置为最大值。我尝试将textview设置为等于进度值,并在不同位置进行测试,progressValue确实工作正常。但是由于某些原因,这些mod值不会假定在我想要的范围内的任何其他地方的值。这是我的密码。提前非常感谢

double proteinmod = 0;
double fatmod = 0;

    seekbar2.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) {
            proteinmod = 0.8+(progressValue/10)*0.2;
            tv6.setText(String.valueOf(proteinmod));
            updateOutput();
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
        }
    });

    seekbar3.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progressValue, boolean fromUser) {
            fatmod = 0.3+(progressValue/10)*0.3;
            tv6.setText(String.valueOf(fatmod));
            updateOutput();
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub
        }
    });
我相信这应该是您需要的所有代码,但如果您需要其他位,请随时询问。

尝试以下操作:

proteinmod = 0.8+(progressValue/10d)*0.2;


由于progressValue和10都是整数,因此除法的结果是整数。投10比1应该可以解决这个问题。

哦,哇,非常感谢!完全按照我想要的方式修复了它。我一直认为,如果你用一个整数和一个双精度来做数学运算,那么这个整数会被用在它的双精度对应项中。谢谢你把这件事弄清楚!
fatmod = 0.3+(progressValue/10d)*0.3;