2017-02-04 53 views
0

我正在開發一個應用程序,我需要一個計數器。我在if條款中有這個計數器,每當這個模塊被觸發時,它應該加1(一)到當前數字。所以如果當前的數字是:1,並且if-block被觸發,那麼當前數字應該是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; 
    } 
} 
+2

發佈整個方法! – OBX

+0

...並努力更好地格式化您的代碼,包括使用但不過度使用空行和空白。 –

+1

另外,在那裏有什麼意思?它將基於中斷執行0或1次。改用if來代替。 –

回答

1

我猜想reps變量是你的,因爲這碼值計數器總是reps2值,這種行爲與你的話相符:

雖然測試這當前的數字也在變化2,但它不會 計數更多。林肯定我已經寫錯了,但似乎無法找到 什麼。

這裏聲明reps作爲局部變量而不是實例字段。
因此,在該方法的每次調用,reps被覆蓋:

int reps = 1; 
if (currentHigh > 10) { 
    reps = reps+1; 
    mTextView.setText(String.valueOf(reps)); 
} 

reps == 2通過假設currentHigh > 10每個呼叫之後。

只要聲明reps作爲實例字段(方法外),它應該可以解決您的問題。

+1

謝謝,我沒有想到..但你是100%正確的先生! – Jack

+0

另一個問題,因爲你已經在這個線程。當我使用這個函數並且If函數爲真時,只要函數爲真就計數,如果聲明爲真,我應該如何設置相同的功能以獲得「一次計數」而不是獲得計數。如果你知道我的意思..我嘗試了一段時間的循環,但沒有得到我想要的地方.. – Jack

+0

「我應該如何設置相同的功能以達到」一次計數「的目的,而不是隻要聲明是真實的「抱歉,我不確定要理解。你能重新配製嗎? – davidxxx