2016-08-14 58 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[][],你仍然可以通過轉換Stringint,執行相加與轉換回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; 
     } 
    } 
} 
相關問題