2013-03-15 66 views
0

我試圖根據用戶選擇使定時器等待時間發生變化。我的計時器正在工作,但設置時間的變量不是。等待時間的公式爲((60/bpm)*1000)-190bpm=60810這是正確的,但是當我在應用論壇中將bpm提高到61時,給出-190。爲什麼?作爲定時器等待時間的Android整數

定時器代碼:

metronomepp.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       Log.i("Metronome", ""+timetw); 
       //timetw=810; 
       if(isChecked) { 
        currentTask = new TimerTask() { 
         @Override 
         public void run() { 
          if (metronome.isPlaying()) { metronome.pause(); } 
          metronome.seekTo(0); 
          metronome.start(); 
         } 
        }; 
        myTimer.schedule(currentTask, 0, timetw); 
       } else { 
        currentTask.cancel(); 
       } 
     } 
    }); 

Bpm increase and timetw change code: 
    plus.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
        bpm++; 
        timetw=(60000/(bpm*1000))-190; 
        Log.i("PlusTW", ""+timetw); 
        Log.i("PlusBPM", ""+bpm); 
        curbpm.setText(""+bpm); 
      } 
    }); 
+1

60/bpm是一個整數除法。 60/61 = 0.使用浮點數。 – njzk2 2013-03-15 09:46:48

+0

我嘗試過,但它墜毀 – 2013-03-15 10:53:04

+0

定義「墜毀」。並嘗試'timetw =(int)((60000.0 /(bpm * 1000.0)) - 190.0);'這應該使該部門使用浮動 – njzk2 2013-03-15 12:06:33

回答

1

像njzk2說,你可以使用花車,然後做Float.valueOf(float f).intValue(),這將迫使浮到一個int按四捨五入和截斷。它應該適用於你的目的。

+0

但是,即使我使用float,formua也會給出-190! – 2013-03-15 11:39:25