需要一个公式来使用2 for循环设置arraylist的索引

时间:2015-05-05 00:24:21

标签: java arraylist

我尝试使用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);
            }
        }

    }

}   

2 个答案:

答案 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-i5-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元素,每个组都要用一个完整的内循环执行 - 这是一个非常明显的选择。到目前为止,你应该知道每一对你的配方应该有什么价值,我觉得你应该能够从中找到它:我认为这是一个你想要学习的练习。