Язык программирования - Java
Добрый Вечер!!!
Определить является ли целочисленная матрица порядка n магическим квадратом, т.е такой, в которой суммы элементов во всех строках и столбцах одинаковы.
Помогите Пожалуйста исправить ошибки:
читать дальшеpackage magicalkvadrat;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args){
KVADRAT mt = new KVADRAT();
mt.Answer(n, matrix);
}
}
class KVADRAT { // Класс, в котором содержаться методы, решающие поставленную задачу
public KVADRAT() {
int [][] matrix;
int n;
Scanner con = new Scanner(System.in);
System.out.println("Здравствуйте, уважаемый пользователь!");
System.out.print(" количество строк и стобцов n= ");
n = con.nextInt();
matrix = new int [n][n];
Random doubleRandom = new Random();
int randomCoeff = 100;
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++){
matrix[i][j] = doubleRandom.nextInt() * randomCoeff;
}
}
} // constructor KVADRAT()
int getSummInRow(int row, int [][] matrix){
int summ = 0;
for(int i = 0; i < matrix.length; i++)
{
for(int j = 0; j < matrix[i].length; j++)
{
if(i == row)
summ += matrix[i][j];
}
}
return summ;
}
int getSummInColumn(int column, int [][] matrix){
int summ = 0;
for(int i = 0; i < matrix.length; i++)
{
for(int j = 0; j < matrix[i].length; j++)
if(j == column)
summ += matrix[i][j];
}
return summ;
}
int getSummInLeftDiag(int [][] matrix){
int summ = 0;
for(int i = 0; i < matrix.length; i++)
summ += matrix[i][i];
return summ;
}
int getSummInRightDiag(int [][] matrix){
int summ = 0;
for(int i = 0, j = matrix [i].length - 1;
i < matrix.length && j >= 0; i++, j--)
summ += matrix[i][j];
return summ;
}
boolean isMagic(int [][] matrix){
boolean b = true;
int summ = getSummInRow(0, matrix);
for(int i = 0; i < matrix.length; i++)
{
if(getSummInRow(i, matrix) != summ || getSummInColumn(i, matrix) != summ ||
getSummInLeftDiag(matrix) != summ || getSummInRightDiag(matrix) != summ)
b = false;
}
return b;
}
void Answer(int n, int [][] matrix){
System.out.println("исходная матрица: ");
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
System.out.printf("%5d " , matrix[i][j], ' ');
}
System.out.println();
}
if(isMagic(matrix)){
System.out.println("Магический квадрат!");}
else{
System.out.println("Не магический квадрат");}
}
}
Выдаёт:
код Java |
| Здравствуйте, уважаемый пользователь! количество строк и стобцов n= 4 исходная матрица: Exception in thread "main" java.lang.NullPointerException at magicalkvadrat.KVADRAT.getSummInRow(Main.java:39) at magicalkvadrat.KVADRAT.isMagic(Main.java:78) at magicalkvadrat.KVADRAT.Answer(Main.java:96) at magicalkvadrat.Main.main(Main.java:14) Java Result: 1 BUILD SUCCESSFUL (total time: 2 seconds)
|
|