2015-05-03 3 views
1

Я пишу класс, который выполняет ручное и бумажное умножение. Я пытаюсь добавить значения в пространство массива. Рабочая область выглядит следующим образом:Добавление значений вниз по массиву

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

Не понимает, почему вы использовали 'ROWCOUNT + rowCount-1' –

+0

Пойдем, ждите im ищет решение! –

ответ

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

} 
Смежные вопросы