在 if 语句中测量时间

Measuring time in an if-statement

我希望时间从第一次点击按钮开始计算。在最后一次点击时,它应该给我第一次点击和最后一次点击之间的时间。在我的代码中它说,startTime cannot be resolved to a variable 当我想获得 difference.

这是代码。

 @Override
    public void onClick(View v) {
        textview1 = (TextView) findViewById(R.id.textView1);
    //Button b = (Button) findViewById(R.id.start_time);
        Random r = new Random();
        RelativeLayout decorView = (RelativeLayout) start_time.getParent();
        int screenWidth = decorView.getWidth();
        int screenHeight = decorView.getHeight();

        i++;

        /*  
        Random r = new Random();

        int x = r.nextInt(R.id.wrap_content);
        int y = r.nextInt(R.id.wrap_content);

        b.setX(x);  
        b.setY(y);
        */ 

        if (i == 1 ) {
            long startTime = SystemClock.elapsedRealtime();
            start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
            start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
        }
        if (i == 2 ) {
            start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
            start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
        }
        if (i == 3 ) {
            start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
            start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
        }
        if (i == 4 ) {
            start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
            start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
        }
        if (i == 5 ) {
            start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
            start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
        }
        if (i == 6 ) {
            start_time.setX(r.nextInt(screenWidth - start_time.getWidth()));
            start_time.setY(r.nextInt(screenHeight - start_time.getHeight()));
        }
        else if (i == 7) {
   long difference = SystemClock.elapsedRealtime()  - startTime;

        // here it says startTime cannot be resolved to a variable

        Intent intent1 = new Intent(Game.this, MainScreen.class);
        intent1.putExtra("time",difference);
            finish();
        }

    }

更改您的代码
if (i == 1) {
    long startTime = SystemClock.elapsedRealtime();
    ...

long startTime;
if (i == 1) {
    startTime = SystemClock.elapsedRealtime();
    ...

当您在块内定义变量时(在您的例子中是 if 块),变量的范围是块,不能在块外使用。

编辑:

此外,如果我对你的代码理解正确,你需要第七次点击的时间差,所以你可以这样做:

else if (i == 7) {
    long difference = SystemClock.elapsedRealtime()  - startTime;

    Intent intent1 = new Intent(Game.this, MainScreen.class);
    intent1.putExtra("time",difference);

    finish();
}

您在第一个 if 语句

中声明了 startTime
 if (i == 1 ) {
    long startTime =    SystemClock.elapsedRealtime();

所以它超出了范围。像在 onClick()

的开头一样尽快声明它
public void onClick(View v) {

 textview1 = (TextView) findViewById(R.id.textView1);
//...
//Somewhere here
long startTime;

然后只需在 if

中初始化它
 if (i == 1 ) {
    startTime =    SystemClock.elapsedRealtime();