title: Magic Square program help (Java)
body: <p>This is homework for my AP Computer Science class dealing with 2D Arrays. Basically what the program does is input values into a Magic Square (all rows, columns, and diagonals add up to be the same number) and determines if it is a Magic Square. My algorithm continually puts out false (according to the isMagic() method) for when it checks if it's Magic. I believe I have problems in my row() and column() methods and if anyone could provide me a solution that would be great.</p>
  
  <pre><code>public class Square
  {
    private int [][] sq;
    private int position = 0;
  
    public Square(int size)
    {
      sq = new int[size][size];
    }
  
    /**
     * adds value to the matrix at the given position, row,col
     */
  
    public void add(int value, int row, int col)
    {
      sq[row][col] = value;
      // fill in code here.
  
    }
  
    public boolean fullSquare()
    {
      int numcheck = 1;
      boolean found = false;
      while (numcheck &lt; sq.length*sq.length)
      {
        for(int i = 0; i &lt; sq.length; i++)
          for(int j = 0; j &lt; sq.length; j++)
        {
          if(sq[i][j] == numcheck)
          {
            found = true;
          }
        }
        numcheck++;
  
        //use nested for loops to loop through array sq.
        //if the value in sq == numcheck, set found to true
  
        //After the loop, check to see if numcheck was found 
        //if not found, return false, otherwise set found to false
        //and increment numcheck to be ready to check the next number
      }
      if(found == false)
        return false;
      else
        return true;
    }
  
    public boolean isMagic()
    {
      int targetNum = 0;
      boolean stuff = false;
  
      for (int c = 0; c &lt; sq[0].length; c++)
      {
        targetNum += sq[0][c];
      }
      if(column(targetNum) == true &amp;&amp; row(targetNum) == true &amp;&amp; diagonalLeft(targetNum) == true &amp;&amp; diagonalRight(targetNum) == true &amp;&amp; fullSquare() == true)
      {
        return true;
      }
      else
        return false;
      //if the rows, columns, diagonals and fullSquare are all
      //true, return true, otherwise, return false.
  
    }
  
    public boolean diagonalLeft(int tN)
    {
      int sum = 0;
      //write loop to see if the diagonal from 
      //lower left to upper right is the same as tN
       for(int d = 0; d &lt; sq[0].length; d++)
      {
        sum = sum + sq[d][(sq.length-1) - d];
      }
      return (sum == tN);
    }
  
    public boolean diagonalRight (int tN)
    {
      int sum = 0;
     //write loop to see if the diagonal from upper left
      //to lower right is the same as tN
      for (int d = 0; d &lt; sq[0].length; d++)
      {
          sum = sum + sq[d][d];
      }
  
     return (sum == tN);
    }
  
    public boolean column (int tN)
    {
      boolean same = true;
      int sum = 0;
  
      //write nested loops to check each column's sum
      //if the sum is not the same as tN, set same to false.
      for(int i = 0; i &lt; sq[0].length; i++)
      {
        for(int j = 0; j &lt; sq[0].length; j++)
        {
          sum = sum + sq[j][i];
        }
      }
      if(sum == tN)
        same = true;
      else
        same = false;
  
      return same;
    }
  
    public boolean row(int tN)
    {
     boolean same = true;
      int sum = 0;
  
      //write nested loops to check each column's sum
      //if the sum is not the same as tN, set same to false.
      for(int i = 0; i &lt; sq[0].length; i++)
      {
        for(int j = 0; j &lt; sq[0].length; j++)
        {
          sum = sum + sq[i][j];
        }
      }
      if(sum == tN)
        same = true;
      else
        same = false;
  
      return same;
    }
  
    public String toString()
    {
      String s = "";
      for (int r = 0; r &lt; sq.length; r++)
      {
        for (int c = 0; c &lt; sq[r].length; c++)
        {
          s += sq[r][c] + " ";
        }
        s+= "\n";
      }
      return s;
    }
    }
  </code></pre>