Java 计数函数未完成

Java 计数函数未完成,java,android,counter,Java,Android,Counter,我正在开发一个需要计数器的应用程序。我在if-子句中有这个计数器,每次触发这个块时,它都应该在当前数字上加1(一)。因此,如果当前编号为:1,且if块被触发,则当前编号应为2,然后下一个编号为3,依此类推。。。无论如何。在进行测试时,当前的数字将更改为2,但不会更多。我肯定我写错了什么,但似乎找不到什么 代码如下: @Override public void onSensorChanged(SensorEvent event) { float presure = event.values

我正在开发一个需要计数器的应用程序。我在
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
值,此行为与您的备注相符:

测试时,当前的数字也在变化,但不会改变 数一数。我肯定我写错了什么,但似乎不可能 找到什么

这里您将
reps
声明为局部变量,而不是实例字段。
因此,每次调用该方法时,
reps
都会被覆盖:

int reps = 1;
if (currentHigh > 10) {
    reps = reps+1;
    mTextView.setText(String.valueOf(reps));
}
reps==2
每次调用后,假设
currentHigh>10


只需将
reps
声明为实例字段(在方法之外),就可以解决您的问题。

发布整个方法!还有,在那个儿呆着有什么意义?它将根据中断执行0或1次。改为使用if。您需要将
reps
声明为全局变量。对于onSensorChanged事件的每次触发,rep变量将重置为一,这样它就永远不会超过两个,并且只有在实际满足currentHight条件的情况下才可以。使rep变量类成为全局变量。我试图编辑您的原始代码,尽量减少多余的空白以便易于阅读。我看到你已经编辑了你的问题,显示了更多的代码,但你没有花一点努力使代码格式良好。对于未来的问题,请务必投入这一点努力,因为这确实会产生很大的影响,我们非常感谢您的努力。为什么要让别人的代码比必要的更难阅读和理解,对吗?谢谢,我没想到。。但是你是百分之百对的,先生!另一个问题,因为你已经在这个线程。当我使用此函数且If函数为true时,只要该函数为true,它就计数。我应该如何设置相同的功能,以获得“一个计数”,而不是只要该语句为true,就获得计数。如果你知道我的意思……我尝试了一个while循环,但没有达到我想要的目的……“我应该如何设置相同的功能来获得“一个计数”,而不是获得计数,只要语句是真的”抱歉,我不确定是否理解。你能重新格式化吗?字符串currentHigh包含高度,我想在设备每次达到目标时计数。当运行此if station时,当高度等于10时计数上升,但当高度为10时计数也上升。那么,我怎样才能在每次到达高度时计数一次,而不是在该高度时计数呢。