Answer:
See explaination
Step-by-step explanation:
import java.util.Scanner;
import java.io.*;
public class Square {
int[][] square;
//--------------------------------------
//create new square of given size
//--------------------------------------
public Square(int size) {
square = new int[size][size];
}
//-----------------------------------------------
//return the sum of the values in the given row
//-----------------------------------------------
public int sumRow(int row) {
// Add your code here
int sum = 0;
for (int i = 0; i < square.length; i++) {
sum = sum + square[row][i];
}
return sum;
}
//-------------------------------------------------
//return the sum of the values in the given column
//-------------------------------------------------
public int sumCol(int col) {
// Add your code here
int sum = 0;
for (int i = 0; i < square.length; i++) {
sum = sum + square[i][col];
}
return sum;
}
//---------------------------------------------------
//return the sum of the values in the main diagonal
//---------------------------------------------------
public int sumMainDiag() {
// Add your code here
int sum = 0;
for (int i = 0; i < square.length; i++) {
sum = sum + square[i][i];
}
return sum;
}
//---------------------------------------------------------------
//return the sum of the values in the other ("reverse") diagonal
//---------------------------------------------------------------
public int sumOtherDiag() {
// Add your code here
int sum = 0;
for (int i = 0; i < square.length; i++) {
sum = sum + square[square.length - i - 1][i];
}
return sum;
}
//-------------------------------------------------------------------
//return true if the square is magic (all rows, cols, and diags have
//same sum), false otherwise
//-------------------------------------------------------------------
public boolean magic() {
// Add your code here. Check if the sum of main diagonal equals the other diagonal,
// also if all rows and all columns sums equal to the diagonal as well. Any uneuqal will
// terminate the comparison.
int d1 = sumMainDiag();
int d2 = sumOtherDiag();
if (d1 != d2) {
return false;
}
for (int i = 0; i < square.length; i++) {
if (d1 != sumRow(i) || d1 != sumCol(i)) {
return false;
}
}
return true;
}
//----------------------------------------------------
//read info into the square from the standard input.
//----------------------------------------------------
public void readSquare(Scanner scan) {
for (int row = 0; row < square.length; row++) {
for (int col = 0; col < square.length; col++) {
square[row][col] = scan.nextInt();
}
}
}
//---------------------------------------------------
//print the contents of the square, neatly formatted
//---------------------------------------------------
public void printSquare() {
for (int row = 0; row < square.length; row++) {
for (int col = 0; col < square.length; col++) {
System.out.print(square[row][col] + "\t");
}
System.out.println();
}
}
}
// ****************************************************************
// SquareTest.java
//
// Uses the Square class to read in square data and tell if
// each square is magic.
//
// ****************************************************************
class SquareTest {
public static void main(String[] args) throws IOException {
File file = new File("magicData.txt");
Scanner scan = new Scanner(file);
int count = 1; //count which square we're on
int size = scan.nextInt(); //size of next square
//Expecting -1 at bottom of input file
while (size != -1) {
//create a new Square of the given size
Square magicSquare = new Square(size);
//call its read method to read the values of the square
magicSquare.readSquare(scan);
System.out.println("\\******** Square " + count + " ********");
//print the square
magicSquare.printSquare();
//print the sums of its rows
for (int row = 0; row < size; row++) {
System.out.println("Sum of row " + row + ": "
+ magicSquare.sumRow(row));
}
//print the sums of its columns
for (int col = 0; col < size; col++) {
System.out.println("Sum of column " + col + ": "
+ magicSquare.sumCol(col));
}
//print the sum of the main diagonal
System.out.println("Sum of the main diagonal: "
+ magicSquare.sumMainDiag());
//print the sum of the other diagonal
System.out.println("Sum of the other diagonal: "
+ magicSquare.sumOtherDiag());
//determine and print whether it is a magic square
if (magicSquare.magic()) {
System.out.println("It's a magic square!");
} else {
System.out.println("It's not a magic square!");
}
System.out.println();
//get size of next square
size = scan.nextInt();
count++;
}
}
}