我正在开发一个我需要一个计数器的应用程序。我在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;
}
}
答案 0 :(得分:1)
我认为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
声明为实例字段(在方法之外),它就可以解决您的问题。