Hi, I need this question answered in Java only please. Also, please use every me
ID: 3589410 • Letter: H
Question
Hi, I need this question answered in Java only please. Also, please use every method listed in the question (public static . . ., all of them) Thank you!
Magic Square 2 7 6-15 9 5 1-15 43815 15 15 15 15 15 The constant that is the sum of every row, column and diagonal is called the magic constant or magic sum, M Every normal magic square has a unique constant determined solely by the value of n, which can be calculated using this formula In this assignment, you are to write a program that takes a 2-dimensional array of ints as input and determines if it is in fact a normal magic square. You will need to implement each of the following methods public static int magicSum(int[Ill array) public static boolean rowsAreAllEqualToMagicSum(int[I array) public static boolean columnsAreAllEqualToMagicSum(int[I array) public static boolean diagonalsAreBothEqualToMagicSum(int[Il] array) public static boolean isMagicSquare(intIl array) public static boolean isNormalMagicSquare(int[I array) public static int getSumOfDownDiagonal (intl array) public static int getSumOfUpDiagonal (int[ array) public static int getSumOfRow(int[)l) array, int index) public static int[] getColumn(int[Il] array, int index) public static int getSumOfColumn(int[ array) You should test your program using a variety of 2-dimensional arrays.Explanation / Answer
Here is the code for you:
class IsMagicSquare
{
public static int magicSum(int[][] array)
{
int n = array.length;
return n * (n*n + 1) / 2;
}
public static boolean rowsAreAllEqualToMagicSum(int[][] array)
{
int magicSum = magicSum(array);
for(int i = 0; i < array.length; i++) //For each row
{
int sum = 0; //Initially sum = 0.
for(int j = 0; j < array.length; j++) //For each column.
sum += array[i][j]; //Calculate the sum of all columns.
if(sum != magicSum) //If the sum of that row is not magicSum
return false; //It fails test.
}
return true; //If all tests pass.
}
public static boolean columnsAreAllEqualToMagicSum(int[][] array)
{
int magicSum = magicSum(array);
for(int i = 0; i < array.length; i++) //For each column
{
int sum = 0; //Initially sum = 0.
for(int j = 0; j < array.length; j++) //For each row.
sum += array[j][i]; //Calculate the sum of all rows.
if(sum != magicSum) //If the sum of that column is not magicSum
return false; //It fails test.
}
return true; //If all tests pass.
}
public static boolean diagonalsAreBothEqualToMagicSum(int[][] array)
{
int magicSum = magicSum(array);
int sum = 0;
for(int i = 0; i < array.length; i++) //For the leading diagonal.
sum += array[i][i]; //Calculate the sum of the diagonal.
if(sum != magicSum) //If the diagonal sum is not magicSum.
return false; //It fails test.
sum = 0; //Again sum initialized to 0.
for(int i = 0; i < array.length; i++) //For the trialing diagonal.
sum += array[array.length-i-1][i]; //Calculate the sum of the diagonal.
if(sum != magicSum) //If the diagonal sum is not magicSum.
return false; //It fails test.
return true; //If both tests pass.
}
public static boolean isMagicSquare(int[][] array)
{
//If rowsSum, columnsSum, and diagonalsSum are all magicSums
if(rowsAreAllEqualToMagicSum(array) && columnsAreAllEqualToMagicSum(array) && diagonalsAreBothEqualToMagicSum(array))
return true; //It is a magic square.
return false; //If not it is not a magic square.
}
public static boolean isNormalMagicSquare(int[][] array)
{
return false; //What do you mean by this...???
}
public static int getSumOfDownDiagonal(int[][] array)
{
int sum = 0;
for(int i = 0; i < array.length; i++) //For the leading diagonal.
sum += array[i][i]; //Calculate the sum of the diagonal.
return sum;
}
public static int getSumOfUpDiagonal(int[][] array)
{
int sum = 0;
for(int i = 0; i < array.length; i++) //For the trialing diagonal.
sum += array[array.length-i-1][i]; //Calculate the sum of the diagonal.
return sum;
}
public static int getSumOfRow(int[][] array, int index)
{
int sum = 0;
for(int i = 0; i < array.length; i++) //For each column
sum += array[index][i]; //Calculate the sum of that row.
return sum;
}
public static int[] getColumn(int[][] array, int index)
{
int[] temp = new int[array.length];
for(int i = 0; i < array.length; i++)
temp[i] = array[i][index];
return temp;
}
public static int getSumOfColumn(int[] array)
{
int sum = 0;
for(int i = 0; i < array.length; i++) //For each value in the array.
sum += array[i]; //Calculate the sum of that column.
return sum;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.