java:在2D数组中向一列添加一个值

时间:2016-08-14 10:34:10

标签: java arrays multidimensional-array

我有一个2D数组,我必须添加一个特定的值,但只能添加到2D数组的一列。必须跳过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}  

并向第3列添加10,第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}  

我希望这个例子让我的问题清楚。谢谢!

2 个答案:

答案 0 :(得分:1)

根据您获得的输出,看起来excelMatrix的类型为String[][],因此当您使用+=运算符时,您将数字连接到字符串。

如果您将excelMatrix数组更改为int[][],您将获得所需的输出。

如果excelMatrix必须保持String[][],您仍然可以将String转换为int,执行添加并转换回String来执行添加(虽然那效率会低一些):

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

答案 1 :(得分: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;
        }
    }
}