File Square.java contains the shell for a class that represents a square matrix.
ID: 3625533 • Letter: F
Question
File Square.java contains the shell for a class that represents a square matrix. It contains headers for a constructor that gives the size of the square and methods to read values into the square, print the square, find the sum of a given row, find the sum of a given column, find the sum of the main (or other) diagonal, and determine whether the square is magic. The read method is given for you; you will need to write the others. Note that the read method takes a Scanner object as a parameter.File SquareTest.java contains the shell for a program that reads input for squares from a file named magicData and tells whether each is a magic square. Following the comments, fill in the remaining code. Note that the main method reads the size of a square, then after constructing the square of that size, it calls the readSquare method to read the square in. The readSquare method must be sent the Scanner object as a parameter.
You should find that the first, second, and third squares in the input are magic, and that the rest (fourth through seventh) are not. Note that the -1 at the bottom tells the test program to stop reading.
Copy the data given and save NotePad in a file called magicData.txt.
// ****************************************************************
// Square.java
//
// Define a Square class with methods to create and read in
// info for a square matrix and to compute the sum of a row,
// a col, either diagonal, and whether it is magic.
//
// ****************************************************************
import java.util.Scanner;
public class Square
{
int[][] square;
//--------------------------------------
//create new square of given size
//--------------------------------------
public Square(int size)
{
}
//--------------------------------------
//return the sum of the values in the given row
//--------------------------------------
public int sumRow(int row)
{
}
//--------------------------------------
//return the sum of the values in the given column
//--------------------------------------
public int sumCol(int col)
{
}
//--------------------------------------
//return the sum of the values in the main diagonal
//--------------------------------------
public int sumMainDiag()
{
}
//--------------------------------------
//return the sum of the values in the other ("reverse") diagonal
//--------------------------------------
public int sumOtherDiag()
{
}
//--------------------------------------
//return true if the square is magic (all rows, cols, and diags have
//same sum), false otherwise
//--------------------------------------
public boolean magic()
{
}
//--------------------------------------
//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()
{
}
}
// ****************************************************************
// SquareTest.java
//
// Uses the Square class to read in square data and tell if
// each square is magic.
//
// ****************************************************************
import java.util.Scanner;
public class SquareTest
{
public static void main(String[] args) throws IOException
{
Scanner scan = new Scanner(new File("magicData.txt"));
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
//call its read method to read the values of the square
System.out.println(" ******** Square " + count + " ********");
//print the square
//print the sums of its rows
//print the sums of its columns
//print the sum of the main diagonal
//print the sum of the other diagonal
//determine and print whether it is a magic square
//get size of next square
size = scan.nextInt();
}
}
}
Use the data given below – copy and paste it into a text file in NotePad or similar editor.
3
8 1 6
3 5 7
4 9 2
7
30 39 48 1 10 19 28
38 47 7 9 18 27 29
46 6 8 17 26 35 37
5 14 16 25 34 36 45
13 15 24 33 42 44 4
21 23 32 41 43 3 12
22 31 40 49 2 11 20
4
48 9 6 39
27 18 21 36
15 30 33 24
12 45 42 3
3
6 2 7
1 5 3
2 9 4
4
3 16 2 13
6 9 7 12
10 5 11 8
15 4 14 1
5
17 24 15 8 1
23 5 16 14 7
4 6 22 13 20
10 12 3 21 19
11 18 9 2 25
7
30 39 48 1 10 28 19
38 47 7 9 18 29 27
46 6 8 17 26 37 35
5 14 16 25 34 45 36
13 15 24 33 42 4 44
21 23 32 41 43 12 3
22 31 40 49 2 20 11
-1
Explanation / Answer
please rate - thanks
// ****************************************************************
// SquareTest.java
//
// Uses the Square class to read in square data and tell if
// each square is magic.
//
// ****************************************************************
import java.util.Scanner;
import java.io.*;
public class SquareTest
{
public static void main(String[] args) throws IOException
{
Scanner scan = new Scanner(new File("magicData.txt"));
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)
{Square s;
s=new Square(size);
//create a new Square of the given size
s.readSquare(scan);
//call its read method to read the values of the square
System.out.println(" ******** Square " + count + " ********");
//print the square
s.printSquare();
//print the sums of its rows
System.out.println("Row Sums Row Sum");
for(int i=0;i<size;i++)
System.out.println((i+1)+" "+s.sumRow(i));
System.out.println();
//print the sums of its columns
System.out.println("Column Sums Col Sum");
for(int i=0;i<size;i++)
System.out.println((i+1)+" "+s.sumCol(i));
System.out.println();
//print the sum of the main diagonal
System.out.println("Diagonol Sums Diagnol Sum");
System.out.println("Main "+s.sumMainDiag());
//print the sum of the other diagonal
System.out.println("Other "+s.sumOtherDiag());
//determine and print whether it is a magic square
if(s.magic())
System.out.println("Square is magic");
else
System.out.println("Square is not magic");
//get size of next square
size = scan.nextInt();
count++;
}
}
}
-----------------------------------------------------------------
// ****************************************************************
// Square.java
//
// Define a Square class with methods to create and read in
// info for a square matrix and to compute the sum of a row,
// a col, either diagonal, and whether it is magic.
//
// ****************************************************************
import java.util.Scanner;
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)
{int sum=0,i;
for(i=0;i<square.length;i++)
sum+=square[row][i];
return sum;
}
//--------------------------------------
//return the sum of the values in the given column
//--------------------------------------
public int sumCol(int col)
{int sum=0,i;
for(i=0;i<square.length;i++)
sum+=square[i][col];
return sum;
}
//--------------------------------------
//return the sum of the values in the main diagonal
//--------------------------------------
public int sumMainDiag()
{int sum=0,i;
for(i=0;i<square.length;i++)
sum+=square[i][i];
return sum;
}
//--------------------------------------
//return the sum of the values in the other ("reverse") diagonal
//--------------------------------------
public int sumOtherDiag()
{int sum=0,i;
for(i=0;i<square.length;i++)
sum+=square[i][square.length-1-i];
return sum;
}
//--------------------------------------
//return true if the square is magic (all rows, cols, and diags have
//same sum), false otherwise
//--------------------------------------
public boolean magic()
{int i,total;
total=this.sumOtherDiag();
if(this.sumMainDiag()!=total)
return false;
int []rows=new int[square.length];
int []cols=new int[square.length];
for(i=0;i<square.length;i++)
{rows[i]=this.sumRow(i);
cols[i]=this.sumCol(i);
}
for(i=0;i<square.length;i++)
if(rows[i]!=total||cols[i]!=total)
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]+" ") ;
System.out.println();
}
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.