Note that there are some explanatory texts on larger screens.

plurals
  1. POMagic Square program help (Java)
    text
    copied!<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>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload