Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Part 1: there is no part i in this assignemnt Part 2: Programming: (20 points) Y

ID: 3779448 • Letter: P

Question

Part 1: there is no part i in this assignemnt Part 2: Programming: (20 points) Your assignment is to designa class called Magicsquares.A magic square is an n by n matrix that is filled with the numbers 1, 2, 3, 4 n square if the sum of the elements in each row, in each column, and in the two diagonals is the same value. Your class must have two instance variables: a 2-D array to hold the integers and an integer size which is the size of your square (for example n). Use the following UML diagram to design the class: Magic Squares square int size int Magicsquares Magic Squares (int (1) leftRight int Diagonaisum right LeftDiagonaisum int coulmnsum int rowsum int correct Numbers boolean. valid Magicsquare boolean toString String Program requirements and/or constraints: You will need to create two files Magicsquares java file, and Assignment8java file which has the

Explanation / Answer

import java.io.*;
import java.util.*;

class MagicSquares
{
int n;
int magic[][];

MagicSquares()
{

String filename = "nums.txt";

try
{
//create Scanner object to read from file
  
Scanner sc= new Scanner(new File(filename));

  


// Read first integer from file   
n = sc.nextInt();

magic = new int[n][n];
  
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
{
//System.out.println(sc.nextInt());
magic[i][j]=sc.nextInt();
  
}
}
catch(Exception e)
{
System.out.println(e);
}


}
MagicSquares(int a[])
{
n= (int)Math.sqrt(a.length);
magic = new int[n][n];
int z=0;
  

for(int i=0;i<n;i++)
for(int j=0; j<n ;j++)
{
  
magic[i][j] = a[z];
z++;
}
}
int rightLeftDiagonalSum()
{
int sum=0;
for(int i=n-1;i>=0;i--)
{
//System.out.println(magic[i][n-1-i]);
sum=sum+magic[i][n-1-i];
}
return sum;
}
int leftRightDiagonalSum()
{
int sum=0;
for(int i=n-1;i>=0;i--)
{
//System.out.println(magic[i][i]);
sum=sum+magic[i][i];
}
return sum;
}
int columnSum()
{
int sum=0;
for(int j=0;j<n;j++)
sum=sum+magic[0][j];
  
return sum;
}
int rowSum()
{
int sum=0;
for(int j=0;j<n;j++)
sum=sum+magic[j][0];
  
return sum;
}
  
boolean correctNumbers()
{
for(int i=0; i<n; i++)
for(int j=0; j<n;j++)
if(magic[i][j] < 1 || magic[i][j] > n*n) return false;


return true;
  
}
  
boolean validMagicSquare()
{
if(correctNumbers() && rowSum()==columnSum() && columnSum()== leftRightDiagonalSum() && leftRightDiagonalSum()== rightLeftDiagonalSum() ) return true;
  
else return false;
}

public String toString()
{
String str="";
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
str=str+ magic[i][j]+" ";

str=str+" ";
}
  
return str;
}
}

public class Assignment8
{
public static void main(String a[])
{
MagicSquares m;
Scanner sc= new Scanner(System.in);
int ch=0;
while(ch!=3)
{
  
System.out.println("1. Create Magic square from file ");
System.out.println("2. Create Magic square from input ");
System.out.println("3. Exit the program ");

ch=sc.nextInt();

if(ch==1)
{
m= new MagicSquares();
System.out.println(m);
if(m.validMagicSquare())System.out.println("It is a magic Square ");
else System.out.println("It is not a magic Square ");
}
else if(ch==2)
{
int n;
System.out.println("Enter size of square matrix");
n=sc.nextInt();
int arr[] = new int[n*n];
  
System.out.println("Enter "+n*n+" elements ");
for(int i=0;i<n*n; i++)
arr[i]=sc.nextInt();
m= new MagicSquares(arr);
System.out.println(m);
  
if(m.validMagicSquare())System.out.println("It is a magic Square ");
else System.out.println("It is not a magic Square ");
}
else if(ch==3)
break;

}
}
}