在 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();
我希望时间从第一次点击按钮开始计算。在最后一次点击时,它应该给我第一次点击和最后一次点击之间的时间。在我的代码中它说,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();