我正在开发一个应用程序,我需要一台计数器。我在 if
-子句中有这个计数器,每次触发此块时,它都应该在当前数字上加 1(一(。因此,如果当前数字为:1并且触发了if块,则当前数字应该是2,然后是下一个数字的3,依此类推...怎么会。在测试时,当前数字将更改为 2,但它不会更多。我确定我写错了什么,但似乎找不到什么。
代码如下:
@Override
public void onSensorChanged(SensorEvent event) {
float presure = event.values[0];
altitude = SensorManager.getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE, presure);
System.out.println("altitude => " + altitude);
Log.d("SENSOR alt: ", String.valueOf(altitude));
int currentHigh = (int) altitude;
int reps = 1;
if (currentHigh > 44){
reps = reps+1;
mTextView.setText(String.valueOf(reps));
}
while(reps == 5){
Vibrator vibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibrate.vibrate(500);
break;
}
}
我想reps
变量是你的计数器,因为此代码值始终reps
与 2
值,此行为与您的备注匹配:
在测试此内容时,当前数字也发生了 2 的变化,但它不会 数更多。我确定我写错了什么,但似乎不能 找到什么。
在这里,您将reps
声明为局部变量,而不是实例字段。
因此,在每次调用该方法时,reps
都会被覆盖:
int reps = 1;
if (currentHigh > 10) {
reps = reps+1;
mTextView.setText(String.valueOf(reps));
}
每次调用后reps == 2
假设currentHigh > 10
.
只需将reps
声明为实例字段(方法外部(,它应该可以解决您的问题。