2016-08-14 2 views
1

У меня есть 2D-массив, к которому я должен добавить определенное значение, но только к одному столбцу 2D-массива. Одна строка 2D-массива должна быть обработана и останется прежней.java: добавление одного значения в один столбец в 2D-массиве

У меня уже есть код (см. Ниже), но это просто добавление значения, а не его вычисление.

Мой код до сих пор:

double lowest = Double.parseDouble(excelMatrix[0][0]); 
    int row = 0, column = 0; 
    List usedRow = new ArrayList(); 
    for(int r = 0; r<excelMatrix.length-1; r++){ 

     for(int c = 0; c<excelMatrix[r].length; c++){ 
      double number = Double.parseDouble(excelMatrix[r][c]); 
      if(lowest > number) { 
       lowest = number; 
       row = r; 
       column = c; 
      }     
     }      
    }      
    usedRow.add(row); 

for(int r = 0; r < excelMatrix.length; r++){ 
    if(r != row) 
    excelMatrix[r][column] += lowest; 
} 

Исходная матрица выглядит следующим образом:

{1 , 2 , 3 , 4 , 5} 
{5 , 4 , 3 , 2 , 1} 
{4 , 5 , 1 , 2 , 3} 
{2 , 3 , 4 , 5 , 1}  
{3 , 4 , 5 , 1 , 2} 

и путем добавления 10 в колонке 3, за исключением строки 3, я хотел бы получить:

{1 , 2 , 3 , 14 , 5} 
{5 , 4 , 3 , 12 , 1} 
{4 , 5 , 1 , 12 , 3} 
{2 , 3 , 4 , 5 , 1} 
{3 , 4 , 5 , 11 , 2} 

Но на данный момент я получаю:

{1 , 2 , 3 , 410 , 5} 
{5 , 4 , 3 , 210 , 1} 
{4 , 5 , 1 , 210 , 3} 
{2 , 3 , 4 , 5 , 1} 
{3 , 4 , 5 , 110 , 2} 

Надеюсь, что пример делает мою проблему ясной. Спасибо!

+0

Каким образом вы должны отличаться от результата, который вы получаете в настоящее время? – Eran

+0

@Eran Я только что обновил вопрос. Надеюсь, теперь ясно, в чем моя проблема. Он просто добавляет значение, но не вычисляет его. – boersencrack

+2

@boersencrack похоже, что вы добавляете строки. Как выглядит 'excelMatrix' –

ответ

1

Основываясь на выходе, который вы получаете, он выглядит так: excelMatrix - String[][], поэтому, когда вы используете оператор +=, вы объединяете число в строку.

Если вы изменили свой массив excelMatrix на int[][], вы получите желаемый результат.

Если excelMatrix должен оставаться String[][], вы можете выполнить сложение путем преобразования String в int, выполняя сложение и преобразование обратно в String (хотя это было бы менее эффективным):

excelMatrix[r][column] = Integer.toString(Integer.parseInt(excelMatrix[r][column]) + value); 
+0

Спасибо, это работает! ;) – boersencrack

0

Этот фрагмент кода решит вашу проблему.

for(int i =0;i<numOfRows;i++) { 
    for(int j= 0;j<numOfColumns;j++) { 
     if(i != rowToBeSkipped) { 
     excelMatrix[i][j] = excelMatrix[i][j] + value; 
     } 
    } 
} 
Смежные вопросы