我正在开发需要计数器的应用程序。我在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声明为实例字段(方法之外),它就可以解决您的问题。

09-27 16:51