假设我有一个这样的方法:
public byte[] generateCoefficientsOfPolynomials(int k ,byte [] file,Random rnd) {
for (int i=0;i<file.length;i++) {
// for each iteration it creates a vector of size 3
}
// some other code here
// here we call the method below where allRndCoefficients is each
// array taken from this method for instance [12,13,-20] and so on
con.sumOfCoefficients(allRndCoefficients, k);
// return type here
}
我将从这个方法中得到的内容将类似于这些数组:
对于第一次迭代 [12,13,-20]
,第二次迭代[123,-25,-56]
等等。
注意:这些数组具有随机值,因为我使用了 rnd.nextBytes(k);
,其中k
是数组中元素的数量。
现在我想要实现的是将这些数组逐个元素添加在一起。假设 [12,13,-20] 与 [123,-25,56] 相加并保存结果。然后,我们保存的结果将与上述方法的第三次迭代生成的数组相加。
我编写了以下代码来完成此操作:
public byte[] sumOfCoefficients(byte [] temp,int k) {
galoaField256 d = new galoaField256 (); // create new reference
d.setGeneratorPolynom(3);
d.getGeneratorPolynom();
d.setString("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
d.getString();
d.loadExp();
d.loadLog();
byte [] initialSum=new byte [k];
for(int i=0;i<k;i++) {
initialSum[i]=(byte)d.add(initialSum[i],temp[i]);
}
System.out.println("The sum is" +Arrays.toString(initialSum));
return initialSum;
}
哪里byte[] temp
是我们在第一个方法每次迭代后获取的数组 generateCoefficientsOfPolynomials
.
不幸的是,这里没有完成两个 vector 的求和。我得到的正是第一个方法生成的数组,这意味着每次我们添加从第一个方法获取的数组时都会添加一个包含 0 个元素的数组,因此 initialSum
array 不会为第一个方法的每次迭代保存其状态。谁能拯救我并告诉我我的代码有什么问题吗?
最佳答案
目前,您的 initialSum[i]
循环计算正在定义一个空白数组元素,并在每次迭代时将该空白元素添加到 temp[i]
中,而不是最后一个元素。考虑有条件地处理累积求和,并注意使用 [i-1]
索引来捕获最后一个元素值:
for(int i=0; i<k; i++) {
if (i==0) {
initialSum[i] = temp[i];
} else {
initialSum[i] = (byte)d.add(initialSum[i-1],temp[i]);
}
}
关于java - 如何在java中每次迭代添加两个数组,然后保存数组的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37237443/