******** Square 1 ******** 8 1 6 3 5 7 4 9 2 The sum of the row 0 is: 15 The sum of the row 1 is: 15 The sum of the row 2 is: 15 The sum of the column 0 is: 15 The sum of the column 1 is: 15 The sum of the column 2 is: 15 The sum of the main diagonal is: 15 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at Square.sumOtherDiag(Square.java:69) at SquareTest.main(SquareTest.java:47)
// ****************************************************************
// SquareTest.java
//
// Uses the Square class to read in square data and tell if
// each square is magic.
//
// ****************************************************************
import java.io.*;
import java.util.Scanner;
public class SquareTest
{
public static void main(String[] args) throws IOException
{
Scanner fileScan = new Scanner(new File("magicData.txt"));
int count = 1; //count which square we're on
int box = fileScan.nextInt(); //size of next square
//Expecting -1 at bottom of input file
while (box != -1)
{
//create a new Square of the given size
Square magicSquare = new Square(box);
//call its read method to read the values of the square
magicSquare.readSquare(fileScan);
System.out.println("\n******** Square " + count + " ********");
//print the square
magicSquare.printSquare();
//print the sums of its rows
for (int row = 0; row < box; row++)
System.out.println("The sum of the row " + row + " is: " + magicSquare.sumRow(row));
//print the sums of its columns
for (int column = 0; column < box; column++)
System.out.println("The sum of the column " + column + " is: " + magicSquare.sumColumn(column));
//print the sum of the main diagonal
System.out.println("The sum of the main diagonal is: " + magicSquare.sumMainDiag());
//print the sum of the other diagonal
System.out.println("The sum of the other diagonal is: " + magicSquare.sumOtherDiag());
//determine and print whether it is a magic square
System.out.println("The square is magic: " + magicSquare.isMagic());
//get size of next square
System.out.println("Next Square");
box = fileScan.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;
import java.util.ArrayList;
public class Square
{
int[][] table;
int[][] square;
int total, i, j;
//--------------------------------------
//create new square of given size
//--------------------------------------
public Square(int size)
{
square = new int[size][size]; // table user defined
}
//--------------------------------------
//return the sum of the values in the given row
//--------------------------------------
public int sumRow(int row)
{
total = 0;
for(i = 0; i < square.length; i++)
{
total+=square[row][i];
}
return total;
}
//--------------------------------------
//return the sum of the values in the given column
//--------------------------------------
public int sumColumn(int column)
{
total = 0;
for(i = 0; i < square.length; i++)
total += square[i][column];
return total;
}
//--------------------------------------
//return the sum of the values in the main diagonal
//--------------------------------------
public int sumMainDiag(){
total = 0;
for (i = 0; i < square.length; ++i)
total += square[i][j];
return total;
}
//--------------------------------------
//return the sum of the values in the other ("reverse") diagonal
//--------------------------------------
public int sumOtherDiag(){
total = 0;
for (i = square.length -j ; i > 0; --i)
total+=square[i][j];
return total;
}
//--------------------------------------
//return true if the square is magic (all rows, cols, and diags have
//same sum), false otherwise
//--------------------------------------
public boolean isMagic(){
int save = sumMainDiag();
for (i = 0; i < square.length; ++i){
if(save!= sumRow(i))
return false;
if(save != sumColumn(i))
return false;
}
if(save != sumOtherDiag())
return false;
return false;
}
//--------------------------------------
//read info into the square from the input stream associated with the
//Scanner parameter
//--------------------------------------
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(i = 0; i < square.length; ++i){
for(int j = 0; j<square.length; ++j)
System.out.print(square[i][j] + "\t");
System.out.println();
}
}
}
not sure why the second code didnt post properly. Where is the edit button???
Also, here is the text file
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
This post has been edited by macosxnerd101: 12 November 2014 - 10:34 PM
Reason for edit:: Added code tags around Square class and output

New Topic/Question
Reply


MultiQuote






|