2 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊
嘗試這個(gè)
int bars = 2;
int beats = 4;
int[] pattern = new int[bars * beats];
for (int i = 0; i < pattern.length; i++) {
if(i % beats < bars ){
pattern[i] = 1;
} else {
pattern[i] = 0;
}
}

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
這是實(shí)現(xiàn)此目標(biāo)的眾多方法之一。我們遍歷數(shù)組,按定義的間隔遞增,例如您希望為 2。我們創(chuàng)建另一個(gè) for 循環(huán),從當(dāng)前索引開始到當(dāng)前索引 + 間隔結(jié)束,這將允許我們將值(在您的情況下為 1)分配給這些索引。我們還檢查我們正在循環(huán)的當(dāng)前索引是否大于數(shù)據(jù)長度 - 1,以確保對(duì)于非偶數(shù)數(shù)組大小,沒有數(shù)組索引超出綁定。
public class ChangeArrayNSteps {
public static void main(String[] args) {
ChangeArrayNSteps cans = new ChangeArrayNSteps(8);
cans.step(2, 1);
System.out.println("Data: " + Arrays.toString(cans.data));
}
private final int[] data;
public ChangeArrayNSteps(int size) {
this.data = new int[size];
}
public void step(int interval, int value) {
for (int index = 0; index < data.length; index += interval) {
for (int stepIndex = index; stepIndex < index + interval; stepIndex++) {
if (stepIndex > data.length - 1) {
return;
}
data[stepIndex] = value;
}
index += interval;
}
}
}
輸出: Data: [1, 1, 0, 0, 1, 1, 0, 0]
添加回答
舉報(bào)