我尝试使用2 for循环将arraylist中每个元素的每个值设置为零。问题是我需要一个公式来将每个索引设置为0到9.这个公式将放在它所说的" FORMULA"在下面的代码中。我想要的结果将是{0,0,0,0,0,0,0,0,0,0,0}的打印行,使用与下面完全相同的代码但使用" FORMULA"被适当的公式替换,以通过每个循环设置正确的索引。如果您需要进一步解释,请告诉我。
import java.util.ArrayList;
public class ArrayListPractice {
public static ArrayList<Integer> x = new ArrayList<Integer>();
public static void main(String args[]){
setArrayValues();
System.out.println(x);
}
private static void setArrayValues() {
for(int i=0; i<10; i++){
x.add(i);
}
for(int i=0; i<5; i++){
for(int j=i+1; j<5; j++){
x.set(FORMULA, 0);
}
}
}
}
答案 0 :(得分:2)
然后下一个会起作用:
FORMULA = 10 - ((4-i)*(5-i))/2 + (4-j)
<强>解释强>
你想要i = 0:FORMULA = 0+(4-j)
如果i = 1,你想要的是:FORMULA = 4+(4-j)
如果i = 2,你想要的是:FORMULA = 7+(4-j)
如果i = 3,你想要的是:FORMULA = 9+(4-j)
你的外环从0到4,所以:
FORMULA = (sum {k=0 to 4} k) - (sum {k=0 to 4-i} k) + (4-j)
这等于:
1/2 4 (1+4)-1/2 (4-i) (1+(4-i)) + (4-j)
反过来又等于:
10 - ((4-i)*(5-i))/2 + (4-j)
注意我在分割前如何相乘。这样我可以使用整数除法而不会丢失数据,因为4-i
或5-i
是偶数,因此(4-i)*(5-i)
是偶数。
如果您甚至希望所有数字都有序,请将每个(4-j)
替换为(j-(i+1))
或(j-i-1)
。然后你会按顺序得到索引0-9。
答案 1 :(得分:0)
如果要设置10(或A * B)元素,则必须应用公式A * B次。如果C和D是你的内外循环的限制,公式将被应用C * D次,在你当前的代码中5 * 5 = 25次(不是5 + 5 = 10!),所以你有一些在那里矫枉过正。因此,更恰当地选择C和D.
然后选择一种方法将x
的元素划分为C组的D元素,每个组都要用一个完整的内循环执行 - 这是一个非常明显的选择。到目前为止,你应该知道每一对你的配方应该有什么价值,我觉得你应该能够从中找到它:我认为这是一个你想要学习的练习。