我尝试使用 2 个 for 循环将数组列表中每个元素的每个值设置为零。问题是我需要一个公式将每个索引设置为 0 到 9。该公式将放置在下面代码中显示“公式”的位置。我想要的结果是打印一行 {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);
}
}
}
}
最佳答案
然后下一步就可以了:
公式 = 10 - ((4-i)*(5-i))/2 + (4-j)
说明:
如果 i=0,你想要:公式 = 0+(4-j)
你想要如果 i=1: 公式 = 4+(4-j)
你想要如果 i=2: 公式 = 7+(4-j)
你想要如果 i=3: 公式 = 9+(4-j)
你的外循环从 0 到 4,所以:
公式 = (sum {k=0 到 4} k) - (sum {k=0 到 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。
关于java - 需要一个使用 2 个 for 循环设置数组列表索引的公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30042291/