Welcome to the Java Programming Forums


The professional, friendly Java community. 21,500 members and growing!


The Java Programming Forums are a community of Java programmers from all around the World. Our members have a wide range of skills and they all have one thing in common: A passion to learn and code Java. We invite beginner Java programmers right through to Java professionals to post here and share your knowledge. Become a part of the community, help others, expand your knowledge of Java and enjoy talking with like minded people. Registration is quick and best of all free. We look forward to meeting you.


>> REGISTER NOW TO START POSTING


Members have full access to the forums. Advertisements are removed for registered users.

Results 1 to 2 of 2

Thread: Magic Squares, input confusion

  1. #1
    Junior Member
    Join Date
    Mar 2010
    Posts
    3
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Magic Squares, input confusion

    Hello, I'm running into a problem with my fourth homework assignment for CS201. Yes, my question involves homework, but I'm not asking for code.

    I can't figure out how to read the magicData file. I'm using Eclipse, and while I believe it should be in the project's main directory, I've also placed copies in the src and bin folders. So, I don't believe the error is a result of the file being misplaced or incorrectly named (the file has no extension).

    Here's my driver program:
    // ****************************************************************
    // 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.IOException;
    import java.io.File;
     
    public class SquareTest {
    	public static void main(String[] args) throws IOException {
    		Scanner scan = new Scanner(new File("magicData"));
    		// make sure that the file magicData is in the current directory
     
    		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
    			Square s = new Square(size);
     
    			// call its read method to read the values of the square
    			System.out.println("\n***** Square " + count + " *****");
     
    			// print the square
    			s.printSquare();
     
    			// print the sums of its rows
    			for (int row = 0; row < size; row++) {
    				System.out
    				.println("Sum of row " + row + "is: " + s.sumRow(row));
    			}
    			System.out.println();
     
    			// print the sums of its columns
    			for (int col = 0; col < size; col++) {
    				System.out.println("Sum of columns " + col + " is: "
    						+ s.sumCol(col));
    			}
    			System.out.println();
     
    			// print the sum of the main diagonal
    			System.out.println("The sum of the main diagonal is: "
    					+ s.sumMainDiag());
    			System.out.println();
     
    			// print the sum of the other diagonal
    			System.out.println("The sum of the other diagonal is: "
    					+ s.sumOtherDiag());
    			System.out.println();
     
    			// determine and print whether it is a magic square
    			System.out.println("Is it a magic square: " + s.magic());
     
    			// get size of next square
    			size = scan.nextInt();
    			count++;
    		}
    	}
    }

    Here's my class file:
    // ****************************************************************
    // 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]; // table user defined
    	}
     
    	// --------------------------------------
    	// return the sum of the values in the given row
    	// --------------------------------------
    	public int sumRow(int row) {
    		int sum = 0;
    		for (int col = 0; col < square.length; col++) {
    			sum = sum + square[row][col];
    		}
    		return sum;
    	}
     
    	// --------------------------------------
    	// return the sum of the values in the given column
    	// --------------------------------------
    	public int sumCol(int col) {
    		int sum = 0;
    		for (int row = 0; row < square.length; row++) {
    			sum = sum + square[row][col];
    		}
    		return sum;
    	}
     
    	// --------------------------------------
    	// return the sum of the values in the main diagonal
    	// --------------------------------------
    	public int sumMainDiag() {
    		int sum = 0;
    		for (int j = 0; j < square.length; j++) {
    			sum = sum + square[j][j];
    		}
    		return sum;
    	}
     
    	// --------------------------------------
    	// return the sum of the values in the other ("reverse") diagonal
    	// --------------------------------------
    	public int sumOtherDiag() {
    		int sum = 0;
    		for (int j = 0; j < square.length; j++) {
    			sum = sum + square[j][square.length - 1 - j];
    		}
    		return sum;
    	}
     
    	// --------------------------------------
    	// return true if the square is magic (all rows, cols, and diags
    	// have same sum), false otherwise
    	// --------------------------------------
    	public boolean magic() {
    		boolean answer = true;
    		int sum = sumMainDiag();
    		if (sumOtherDiag() != sum) {
    			answer = false;
    		} else {
    			for (int row = 0; row < square.length; row++) {
    				if (sum != sumRow(row)) {
    					answer = false;
    				}
    			}
    			for (int col = 0; col < square.length; col++) {
    				if (sum != sumCol(col)) {
    					answer = false;
    				}
    			}
    		}
    		return answer;
    	}
     
    	// --------------------------------------
    	// 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 (int row = 0; row < square.length; row++)
    			for (int col = 0; col < square.length; col++) {
    				System.out.print(square[row][col] + " ");
    				System.out.println();
    			}
    	}
     
    }

    And here's the magicData 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

    Also, here's the frustrating output I'm currently receiving:
    0 
    0 
    0 
    0 
    0 
    etc...
     
    Sum of row 0is: 0
    Sum of row 1is: 0
    Sum of row 2is: 0
    Sum of row 3is: 0
    Sum of row 4is: 0
    Sum of row 5is: 0
    Sum of row 6is: 0
    Sum of row 7is: 0
    Sum of row 8is: 0
    Sum of row 9is: 0
    Sum of row 10is: 0
    Sum of row 11is: 0
    Sum of row 12is: 0
    Sum of row 13is: 0
    Sum of row 14is: 0
    Sum of row 15is: 0
    Sum of row 16is: 0
    Sum of row 17is: 0
    Sum of row 18is: 0
    Sum of row 19is: 0
    Sum of row 20is: 0
    Sum of row 21is: 0
    Sum of row 22is: 0
    Sum of row 23is: 0
     
    Sum of columns 0 is: 0
    Sum of columns 1 is: 0
    Sum of columns 2 is: 0
    Sum of columns 3 is: 0
    Sum of columns 4 is: 0
    Sum of columns 5 is: 0
    Sum of columns 6 is: 0
    Sum of columns 7 is: 0
    Sum of columns 8 is: 0
    Sum of columns 9 is: 0
    Sum of columns 10 is: 0
    Sum of columns 11 is: 0
    Sum of columns 12 is: 0
    Sum of columns 13 is: 0
    Sum of columns 14 is: 0
    Sum of columns 15 is: 0
    Sum of columns 16 is: 0
    Sum of columns 17 is: 0
    Sum of columns 18 is: 0
    Sum of columns 19 is: 0
    Sum of columns 20 is: 0
    Sum of columns 21 is: 0
    Sum of columns 22 is: 0
    Sum of columns 23 is: 0
     
    The sum of the main diagonal is: 0
     
    The sum of the other diagonal is: 0
     
    Is it a magic square: true
     
    etc...

    Any ideas as to why my program currently disregards the contents of magicData?


  2. #2
    Super Moderator helloworld922's Avatar
    Join Date
    Jun 2009
    Posts
    2,895
    Thanks
    23
    Thanked 619 Times in 561 Posts
    Blog Entries
    18

    Default Re: Magic Squares, input confusion

    hmm.. so far as I can tell no where in your code are you populating the Square object with the input values. I also don't see any code that's reading in the data from the files, only the size.

Similar Threads

  1. Getting input
    By BuhRock in forum What's Wrong With My Code?
    Replies: 1
    Last Post: April 22nd, 2010, 10:30 AM
  2. [SOLVED] allow a new input, dicarding the last mismatch input without terminating the program
    By voltaire in forum What's Wrong With My Code?
    Replies: 2
    Last Post: April 9th, 2010, 04:44 AM
  3. Default Access (package access) confusion
    By gauravrajbehl in forum Java Theory & Questions
    Replies: 1
    Last Post: November 18th, 2009, 04:11 AM
  4. Scanner class error "java.lang.Error"
    By Lheviathan in forum What's Wrong With My Code?
    Replies: 2
    Last Post: September 21st, 2009, 02:23 AM
  5. Confusion in creating class with OOPS concept
    By grbsmj in forum Object Oriented Programming
    Replies: 3
    Last Post: May 6th, 2009, 03:14 AM