2014-02-17 273 views
0

鑑於我目前的程序,我希望計算一次用戶輸入所有值後每列和每行的總和。我目前的代碼似乎只是數組的價值的兩倍。這不是我想要做的。例如,如果用戶輸入具有以下值的3x3矩陣1 2 3 2 3 4 3 4 5,它看起來像我在下面的程序中格式化了它。 (見上面評論)總結2D陣列

然後我也想修改代碼,以便它挑選出對角線,並打印出來,這樣的輸出將是:主對角線:{1,3,5}

回答

0

您的代碼是好的,但最後列的總和你應該改變行而不是列。像這樣:

System.out.println("\n"); 

    for(int column = 0; column < columns; column++) 
    { 
     for(int row = 0; row < rows; row++) 
      { 
      array2d[row][column] = array2d[row][column] + array2d[row][column]; 
      System.out.print(array2d[row][column] + " "); 
      } 
     System.out.println(); 
    } 
+0

不,這不是我想要的。我想要添加每列和每行,然後輸出看起來像我在我的代碼頂部的評論中。 – user3294617

0

歡迎來到Java世界。首先我們來剖析你的「加倍陣列」代碼。

array2d[row][column] = array2d[row][column] + array2d[row][column]; 

這行代碼是問題。您應用的循環往往會更新矩陣中每個元素的值。對於例如假設

array2d[1][2]=2 

因此上面提到的代碼執行此

array2d[1][2]= array2d[1][2]+array2d[1][2]; 

基本上加倍數組的值。

你應該嘗試這樣的事:

//To print the values of rows 

    for(int i=0;i<rows;i++) 
    { 
     int rowValue=0; 

     for(int j=0;j<columns;j++) 
     { 

      //Print current row value 
      rowValue = rowValue + array2d[i][j]; 

     } 
     System.out.println("ROW" +i+ "=" + rowValue); 

    } 

下面的代碼將幫助您計算列的值。

//To print values of columns 
    for(int i=0;i<columns;i++) 
    { 
     int columnValue=0; 

     for(int j=0;j<rows;j++) 
     { 

      //Print current row value 
      columnValue = columnValue + array2d[i][j]; 

     } 
     System.out.println("COLUMN" +i+ "=" + columnValue); 

    } 

嘗試製作對角線的代碼。它非常簡單。

提示:主對角線的行號和列號相同。

P.S. - 將scan.close()添加到您的代碼中。始終關閉此類連接以防止資源泄漏。

0

對於主對角線

for(int i=0;i<columns;i++) 
    { 
    for(int j=0;j<rows;j++) 
    { 
     if(i==j){ 
      System.out.println(a[i][j]+ "\n"); 
      } 
     } 

    }