【发布时间】:2014-02-24 11:27:08
【问题描述】:
float targetVolume 在 public void 方法中创建,但无法在另一个 public void 方法中解析...
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
float x = (float) Math.random();
if (x < 0.5){
float targetVolume = 0;
} else {
float targetVolume = 1;
}
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
if (targetVolume.equals (1)){
mp.setVolume(startingVolume+volumeIncrement, startingVolume+volumeIncrement);
} else {
mp.setVolume(startingVolume-volumeIncrement, startingVolume-volumeIncrement);
}
}
}, 0, 1, TimeUnit.SECONDS);
}
}, 0, 5, TimeUnit.SECONDS);
我该如何解决这个问题?
编辑:我可以通过将 final 修饰符添加到浮点数来解决问题:
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
float x = (float) Math.random();
final float targetVolume=(x < 0.5)?0:1;
scheduleTaskExecutor.scheduleAtFixedRate(new Runnable() {
public void run() {
if (targetVolume >startingVolume){
startingVolume = startingVolume+volumeIncrement;
mp.setVolume((startingVolume), (startingVolume));
}
else if (targetVolume < startingVolume){
startingVolume = startingVolume-volumeIncrement;
mp.setVolume((startingVolume), (startingVolume));
}
}
}, 0, 1, TimeUnit.SECONDS);
}
}, 0, 5, TimeUnit.SECONDS);
但是,每次运行任务时,最终的 float targetVolume 现在是否保持相同的值(零或 1)?我需要这个值随机改变...
【问题讨论】: