在数组中添加值

时间:2015-05-03 00:46:51

标签: java arrays integer

我正在写一个做笔和纸倍增的课程。 我正在尝试在数组空间中添加值。工作区看起来像:

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);

    }

1 个答案:

答案 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);

}