使用double而不是int循环

时间:2013-09-22 13:48:17

标签: java loops audio for-loop

好吧,所以我想在登录我的客户端时让剪辑的音量逐渐减少

问题是,我需要改变这个

FloatControl gainControl = (FloatControl)
clip.getControl(FloatControl.Type.MASTER_GAIN);
gainControl.setValue(-10.0f);// 

进入for循环,我不知道该怎么做

我是新来的,所以我不确定事情是如何运作的,所以如果我遗漏任何信息,请告诉我

编辑:我知道了,这里是任何有类似问题的人的代码

FloatControl gainControl = (FloatControl)
clip.getControl(FloatControl.Type.MASTER_GAIN);
for(int i = 0; i >= -35; --i) {
    try {
        Thread.sleep(160);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    gainControl.setValue((float) i);
}

2 个答案:

答案 0 :(得分:0)

怎么样:

FloatControl gainControl = (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN);

for(int i = 0; i >= -10; --i) {
   gainControl.setValue((double) i);
}

如果你想用分数减少它,你可以做类似的事情:

for(int i = 0; i >= -50; --i) {
   gainControl.setValue(0.2 * i);
}

在第二种情况下,你从音量减少0.2。

我正在使用int,因为浮点数会导致>=条件问题。

答案 1 :(得分:0)

如果您愿意,可以使用double作为循环“索引”。由于通常的浮点问题,您只需要注意循环终止条件。

public class DoubleIndex {
    public static void main(String[] argv) {
        for (double x = 0.0; x < 2.0; x+=0.2) {
            System.out.println(x);
        }
    }
}

(请注意,由于浮点精度问题,这会迭代11次。)

C:\JavaTools>java DoubleIndex
0.0
0.2
0.4
0.6000000000000001
0.8
1.0
1.2
1.4
1.5999999999999999
1.7999999999999998
1.9999999999999998