Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.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
Java 相异双精度的减法得到0.0_Java_Android - Fatal编程技术网

Java 相异双精度的减法得到0.0

Java 相异双精度的减法得到0.0,java,android,Java,Android,我试图减去两个小的双倍,这两个都是通过使用系统时间得到的,如下所示: start = System.currentTimeMillis(); end = System.currentTimeMillis(); 然后我减去两个(end-start),并尝试将该值存储到我制作的double[]data数组中。出于某种原因,结果不是双精度的,而是继续输出0.0 我初始化了数据数组,如下所示: private double[] data = new double[maxTaps+1]; 其中,Max

我试图减去两个小的双倍,这两个都是通过使用系统时间得到的,如下所示:

start = System.currentTimeMillis();
end = System.currentTimeMillis();
然后我减去两个(
end-start
),并尝试将该值存储到我制作的
double[]data
数组中。出于某种原因,结果不是双精度的,而是继续输出
0.0

我初始化了数据数组,如下所示:

private double[] data = new double[maxTaps+1];
其中,
MaxTaps
是一个常数

我正在使用textView在屏幕上输出我前进时的值。出于某种原因,当我打印(
end-start
)时,它会给我一个非零的双精度。但是如果我把这个双精度(
end-start
)放到我的数据数组中,并尝试从数据数组中打印这个双精度,结果是0.0

例如:我试图获取从按钮改变颜色到点击按钮的时间。更改按钮的颜色后,我设置了开始时间。然后,当用户点击特定的按钮时,使用上面的方法记录结束时间,并将两者减去并添加到我的数据数组中。奇怪的部分如下:当我像下面这样输出数据时,结果总是0.0

bottomText.setText("Data point " + Integer.toString(taps) + ": " + String.valueOf(data[taps]));
但是,如果我将
data[taps]
更改为(
end-start
)(如下所示),那么我会得到一个合理的值

bottomText.setText("Data point " + Integer.toString(taps) + ": " + String.valueOf((end - start));
我在这里真的很迷茫,因为它们应该是相同的值

另外,我只是将我的一个单击侦听器的外观包含在一个按钮中,这可能也很有用

buttonTopLeft.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View view){
            if (lit == 1) {
                end = System.currentTimeMillis();
                data[taps] = (end - start);
                taps++;
                buttonTopLeft.setBackgroundColor(Color.WHITE);

                mHandler.postDelayed(new Runnable() {
                    public void run(){
                        doUpdate();
                    }
                }, 1000);
            }
         }
    });

问题很可能是因为您在设置值之后增加了点击,而新的
数据[taps]
实际上为零。
data[taps-1]
处的数据是您要查找的值。假设taps为0,那么您可以设置第一个元素-
data[0]=15.0
。然后
taps++
现在taps是1,您将实际打印
数据[1]
,该数据未设置为显示0

,因此,您不认为
data[]
的定义可能与问题有任何关联吗?不是双精度,而是继续输出0.0,即双精度;)需要更多的背景。可能是您在设置值后增加了
taps
,因此
data[taps]
应该是0@MikeNakis在本例中,我就是这样定义数据[]。很抱歉,我的问题中没有包括这一点。私有双精度[]数据=新双精度[maxTaps+1]@卢卡斯:我想我不明白你在说什么。设置值后,我将增加轻敲次数。您可以在我附加到问题的代码中看到这种情况。我想在索引0(第一次点击)处获取(结束-开始)时间,然后继续增加点击以不断更新数据[]是的,在根据您的评论更改了一些内容之后,我只需确保如果点击为0,我不会调用它,以避免出现空错误。非常感谢。