我正在写一个做笔和纸倍增的课程。 我正在尝试在数组空间中添加值。工作区看起来像:
52670000000000000000
00503000000000000000
00526700000000000000
00052510000000000000
所以我想为第一列添加5,0,0,0
并存储在第一个数组索引中。然后2,0,0,0
为下一个。如果它超过10,那么我只需将0放入数组并将1运载。我提取数字的进位/其余部分的函数工作正常。
我只计算最多rowCount+rowCount-1
的列,这是我可以去的有多少列的实际值。
我怎样才能让它加起来?到目前为止,我只能添加它。 (它可以正常添加,但我想添加下来)!
public static long addUpWorkspace(int rowCount, long[][]workspace){
long carry = 0;
long[]answer = new long[rowCount+rowCount-1];
//for every row
for (int i = 0; i < rowCount; i++){
long value = 0;
//for every column
for (int j = 0; j < rowCount+rowCount-1; j++){
value+=workspace[i][j];
}
value+=carry;
System.out.println(value);
//extract workspace value
answer[i] = extractLast(value);
//extract carry
carry = extractAllButLast(value);
}
答案 0 :(得分:0)
问题在于你的for
循环,你正在做的是,对于你的外循环的每次迭代,你保持行号不变(外循环)并增加你的列号(内循环)这解释了为什么你正在经历。
您需要做的是将外部for
循环的圆括号中的任何内容与您内部for
循环的圆括号中的内容交换
public static long addUpWorkspace(int rowCount,long[][]workspace){
long carry = 0;
long[]answer = new long[rowCount+rowCount-1];
//for every column
for (int j = 0; j < rowCount+rowCount-1; j++){
long value = 0;
//for every row
for (int i = 0; i < rowCount; i++ ){
value+=workspace[i][j];
}
value+=carry;
System.out.println(value);
//extract workspace value
answer[i] = extractLast(value);
//extract carry
carry = extractAllButLast(value);
}