2016-08-14 14 views
1

2D配列のある列にのみ、値を追加する必要がある2D配列があります。 2D配列の1行はスキップしなければならず、前と同じままです。java:2D配列の1つの列に値を1つ追加する

私はすでにコードを持っていますが(それは以下を参照してください)、それは値を追加しているだけで、計算していません。

私のコード今のところ:

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} 

をし、3行を除いて、3欄に10を追加することで、私が取得したいと思います:

{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[][]に変更すると、目的の出力が得られます。

excelMatrixString[][]のままでなければならない場合、あなたはまだ(それはあまり効率的であるが)、intString変換加算を行うと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; 
     } 
    } 
} 
関連する問題