【发布时间】:2017-02-04 17:38:27
【问题描述】:
我正在开发一个需要计数器的应用。我在if-clause 中有这个计数器,每次触发这个块时,它应该在当前数字上加 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 次。改用 if。
-
需要将
reps声明为全局变量 -
对于 onSensorChanged 事件的每一次触发,rep 变量都会重置为 1,因此它永远不会超过 2,并且只有当 onSensorChanged b>currentHight 条件实际上是满足的。使 rep 变量 Class 成为全局变量。
-
我尝试编辑您的原始代码,尽量减少多余的空白,以便于阅读。我看到您已经编辑了您的问题,显示了更多代码,但是您没有付出一点努力来使代码格式正确。请为将来的问题付出一点努力,因为它确实会产生很大的不同,我们非常感谢您的努力。为什么要让别人的代码比必要的更难阅读和理解,对吧?