public class Array2dCom {
  public static void main(String[] args) {

    int[][] m= new int[][]{new int[]{1,3,5,9},
                           new int[]{2,100},
                           new int[]{2,2,3}  };

    int[] rsum= new int[m.length];  //array of row sums
    int highSum= Integer.MIN_VALUE; //max row sum so far
    int highIndex= 0;          //index of row with highSum

    for (int r=0; r<m.length; r++) {

      //calculate row sum
      for (int c=0; c<m[r].length; c++)
        rsum[r] += m[r][c];

      //if current row sum is highest, update highSum, highIndex
      if (rsum[r]>= highSum) {
        highSum= rsum[r];
        highIndex= r;
      }
    }    

    //swap row with highest sum into first row
    int[] tmp= m[0];
    m[0]= m[highIndex];
    m[highIndex]= tmp;

    //Print 2-d array
    for (int r=0; r<m.length; r++){
      for (int c=0; c<m[r].length; c++)
        System.out.print(m[r][c]+ "  ");
      System.out.println();
    }

  }
}

