user5225180
user5225180

Reputation:

Minimum of an array always equals zero

I am trying to create a lag timer, I am using System.nanotimeto do this. My problem is that the minimum number of my array that I use to keep the times in is always equal to zero. Another issues that I am having is that I print out the values of the Time and grayValGlobal, they do not appear right after each other, I feel like this is related to my first problem.

code

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;
    }
}

logcat

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

Upvotes: 0

Views: 69

Answers (2)

zerobandwidth
zerobandwidth

Reputation: 1303

You're executing only five lag tests but your timearray has 500 elements. As soon as the minimum scanner hits iteration 6 you're going to get a 0 minimum, which will thereafter never change.

Upvotes: 1

Hank Moody
Hank Moody

Reputation: 354

try to check all your variables in array

    //min scan
    double minTimeArray = timeArray[0];
    for (cnt = 0; cnt < timeArray.length; cnt++) {
        if (timeArray[cnt] < minTimeArray) {
            minTimeArray = timeArray[cnt];
        }
    Log.i("Array", "value: " + String.valueOf(minTimeArray) + "  at: " + cnt);
    }

Or yo can add this

if (timeArray[cnt] < minTimeArray && timeArray[cnt] != 0) 

to "if" statement

Upvotes: 0

Related Questions