title: finding sum of two dimensional array java
body: <p>I am working on a project where I have to read a file and enter the content into a 2D array. Then I have to sum each row, each column, and the perimeter of the matrix. I have everything working so far except the perimeter. I am trying to create separate for loops for the top row, bottom row, and middle of the two outside columns. </p>
  
  <p>The matrix file looks like this:</p>
  
  <pre><code>1 2 3 4 
  2 4 6 8 
  2 4 6 8 
  3 2 3 4 
  </code></pre>
  
  <p>Therefore the perimeter should add up to 42. 
  Right now I can successfully add the first row and the last row to equal 22. However, when I add the columns to that total I get 32. </p>
  
  <p>Here is the code:</p>
  
  <pre><code>import java.util.*; // Scanner class
  import java.io.*;  // File class
  
  public class Lab10
  {
     static public void main( String [ ] args )  throws Exception
     {    
    if ( args.length != 1 )
    {
      System.out.println("Error -- usage is:  java Lab10 matdataN.txt");
      System.exit( 0 );
    }
  
      //Requirement #1: first int value: # of rows, second int value: # of cols
      File newFile = new File(args[0]); 
      Scanner in = new Scanner(newFile);
  
      int numRows = in.nextInt();
      int numCols = in.nextInt();
  
      //Requirement #2: declare two-d array of ints
      int[][] matrix;
      matrix = new int[numRows][numCols];
  
      //Requirement #3 &amp; 4: read file one line at a time (nested for loops 
          //and nextInt()) and print
  
      for (int i = 0; i &lt; numRows; i++)
      {
          for (int j = 0; j &lt; numCols; j++)
          {
              matrix[i][j] = in.nextInt();
              System.out.print(matrix[i][j]+ " ");
          }
      System.out.println();
      }
  
      //Requirement #5: traverse each row and sum the values and display the sums
      int rowTotal = 0;
      for (int i = 0; i &lt; numRows; i++)
      {
          rowTotal = 0;
          for (int j = 0; j &lt; numCols; j++)
          {
              rowTotal += matrix[i][j];
          }
      System.out.println("Sum for row = " + rowTotal);
      }
  
      //Requirement #6: traverse each column and sum the values and display the sums
      int colTotal = 0;
      for (int i = 0; i &lt; numRows; i++)
      {
          colTotal = 0;
          for (int j = 0; j &lt; numCols; j++)
          {
              colTotal += matrix[j][i];
          }
      System.out.println("Sum for col = " + colTotal);
      }
  
      //Requirement #7: traverse the perimeter and sum the values and display the sum
  
      //sum bottom row matrix
      int perTotal = 0;
      for (int i = (numRows-1); i &lt; numRows; i++)
      {
          perTotal = 0;
          for (int j = 0; j &lt; numCols; j++)
          {
              perTotal += matrix[i][j];
          }
      }
  
      //sum + top row matrix
      for (int i = 0; i &lt; numRows - (numRows-1); i++)
      {
          for (int j = 0; j &lt; numCols; j++)
          {
              perTotal += matrix[i][j];
          }
      System.out.println("Sum of perimeter = " + perTotal);
      }
  
      // sum + first col middle
      for (int i = 1; i &lt; (numRows-1); i++)
      {
          for (int j = 0; j &lt; numCols - (numCols-1); j++)
          {
              perTotal += matrix[j][i];
          }
      System.out.println("Sum = " + perTotal);
      }
  
      // sum + last col middle
      for (int i = 1; i &lt; (numRows-1); i++)
      {
          for (int j = (numCols-1); j &lt; numCols; j++)
          {
              perTotal += matrix[j][i];
          }
      System.out.println(perTotal);
      }
  
     }
  </code></pre>
  
  <p>I would be hugeeeeeely appreciative if anyone could help me total the middle of the first and last column (should be 2+2 and 8+8). Or if you have an altogether better way of finding the perimeter. Thanks in advance!</p>