计数功能未完成

时间:2017-02-04 17:38:28

标签: java android counter

我正在开发一个我需要一个计数器的应用程序。我在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;
    }
} 

1 个答案:

答案 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声明为实例字段(在方法之外),它就可以解决您的问题。