java - 数组的最小值始终等于零

标签 java android

我正在尝试创建一个滞后计时器,我正在使用 System.nanotime 来执行此操作。我的问题是,我用来保存时间的数组的最小数量始终等于零。我遇到的另一个问题是我打印出 Time 和 GrayValGlobal 的值,它们没有紧随其后出现,我觉得这与我的第一个问题有关。

代码

public class startTestAsync extends AsyncTask<Double, Void, Void> {
    long [] timeArray = new long[500]; // set array
    long rating;
    long lagStartTime;
    long lagEndTime;
    long lagTimeResult;
    int testAmount;
    int cnt;
    @Override
    protected Void doInBackground(Double... grayVal) {
        for (testAmount = 0; testAmount < 500; testAmount++) {
            lagStartTime = System.nanoTime(); //start lagTimer start
            runOnUiThread(new Runnable() {
                public void run() {
                    lagSquare.setBackgroundColor(Color.rgb(255, 255, 255));
                }
            });
            while (grayValGlobal >= 100.0) {
                Log.i("Mat Value Async", String.valueOf(grayValGlobal));
                runOnUiThread(new Runnable() {
                    public void run() {
                        lagSquare.setBackgroundColor(Color.rgb(000, 000, 000));//set lagSquare black
                    }
                });
lagEndTime = System.nanoTime();
lagTimeResult = (lagEndTime - lagStartTime) / 1000000;
timeArray[testAmount] = lagTimeResult;
              Log.i("Time", String.valueOf(timeArray[testAmount]));
            }
        }
        //min scan
        long minTimeArray = timeArray[0];
        for (cnt = 0; cnt < timeArray.length; cnt++) {
            if (timeArray[cnt] < minTimeArray) {
                minTimeArray = timeArray[cnt];
            }
        }
        Log.i("MinTimeArray", String.valueOf(minTimeArray));
        final String minTimeArrayString = String.valueOf(minTimeArray);
        rating = minTimeArray;
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                lagTime.setText(minTimeArrayString);
                if (rating <= 17.0) {
                    lagRating.setText("Excellent");
                }
                else if (rating <= 34.0){
                    lagRating.setText("Great");
                }
                else if (rating <= 51.0){
                    lagRating.setText("Average");
                }
                else {
                    lagRating.setText("Bad");
                }
            }
        });
        return null;
    }
}

日志猫

08-29 17:10:27.849   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4102.355956
08-29 17:10:27.850   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4102.569579
08-29 17:10:27.850   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4102.966307
08-29 17:10:27.850   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.851   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4103.332518
08-29 17:10:27.851   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.851   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4103.668212
08-29 17:10:27.851   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4103.912352
08-29 17:10:27.851   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.851   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4104.339598
08-29 17:10:27.852   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4104.980467
08-29 17:10:27.852   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4105.163573
08-29 17:10:27.853   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4105.438232
08-29 17:10:27.853   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4105.651855
08-29 17:10:27.853   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.853   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.853   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.854   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4106.445312
08-29 17:10:27.854   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4106.689453
08-29 17:10:27.854   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4106.903076
08-29 17:10:27.854   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4107.116699
08-29 17:10:27.854   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4107.330322
08-29 17:10:27.855   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4107.543945
08-29 17:10:27.855   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.855   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4107.910156
08-29 17:10:27.855   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.856   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.856   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.856   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.856   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.857   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4109.49707
08-29 17:10:27.857   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.857   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0
08-29 17:10:27.857   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4110.290527
08-29 17:10:27.858   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4110.50415
08-29 17:10:27.858   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4110.74829
08-29 17:10:27.858   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4110.961913
08-29 17:10:27.858   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4111.206054
08-29 17:10:27.859   9897-11295/bluemage.systems.displaylatencytester I/Mat Value Async﹕ 131.0 
08-29 17:10:27.859   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4111.877441
08-29 17:10:27.859   9897-10042/bluemage.systems.displaylatencytester I/Mat Value﹕ 95.0
08-29 17:10:27.859   9897-11295/bluemage.systems.displaylatencytester I/Time﹕ 4112.213134
08-29 17:10:27.862   9897-11295/bluemage.systems.displaylatencytester I/MinTimeArray﹕ 0.0

最佳答案

您只执行了五个滞后测试,但您的 timearray 有 500 个元素。一旦最小扫描仪达到迭代 6,您将获得最小值 0,此后它将永远不会改变。

关于java - 数组的最小值始终等于零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32290946/

相关文章:

java - Spring Boot 不从属性文件读取

java - 为什么这个 REST 服务不起作用?

java - 检查矩阵内的总和并递归地将路径保留在第二个数组上

java - 阻止 Android 中某些选定的菜单点以进行家长控制

java - 创建签名的 bundle 版本。错误 : Android resource linking failed

android - ListView 分隔线不可见

java - Java 中的线程说明

java - 在JAVA(Eclipse)中序列化文件时如何将编码设置为UTF8

android - 如何让 1024 x 600 的 Android 模拟器工作?

安卓 : ActionBar menu item cannot be resolved or isn't a field