Comp Sci Java Maze Boundary Check Method for Pathfinding

  • Thread starter Thread starter apiwowar
  • Start date Start date
  • Tags Tags
    Boundary Java
AI Thread Summary
The discussion focuses on a Java method designed to check neighboring coordinates in a grid for pathfinding, specifically addressing boundary checks to prevent accessing out-of-bounds indices. The user encounters an issue where the conditions for column checks are not being executed, leading to confusion about the logic flow. It is identified that the method's structure prevents reaching column checks if the row conditions are met, indicating a logical error in the implementation. The conversation highlights the importance of correctly structuring conditional statements to ensure all necessary checks are performed. Overall, the thread emphasizes common pitfalls in coding logic that can lead to overlooked errors.
apiwowar
Messages
94
Reaction score
0
I'm writing a method that checks a given coordinates neighbors to see if they are part of the path. the problem I am having with is the conditions that ihave to make sure i don't go outside of the grid. it doesn't seem that the two conditions for col are being checked. i put print statements inside each check to see if they get printed and the two for col dont. is there any obvious mistake that i made?

Thank you

Code:
public static void neighbors(Coordinate current, int[][] grid, Queue q)
	{
	        int row = current.getRow();
		int col = current.getCol();
		
		if((row - 1) >= 0)
		{
			System.out.println("Checking north");
			if(grid[row-1][col] == 1)
			{
				if(grid[row][col] == -1)
				{
					grid[row-1][col] = grid[row][col] + 2;
				}
			
				else
				{
					grid[row-1][col] = grid[row][col] + 1;
				}
			
				Coordinate x = new Coordinate(row-1,col);
			
				System.out.println("first if in neighbor");
				System.out.println("enqueue");
				q.enqueue(x);
				System.out.println("test count " + q.getCount());
			}
		}
		else if((row + 1) <= grid.length)
		{
			System.out.println("checking south");
			if(grid[row+1][col] == 1)
			{
				if(grid[row][col] == -1)
				{
					grid[row+1][col] = grid[row][col] + 2;
				}
			
				else
				{
					grid[row+1][col] = grid[row][col] + 1;
				}
			
				Coordinate x = new Coordinate(row+1,col);
				System.out.println("second if in neighbor");
				System.out.println("enqueue");
				q.enqueue(x);
				System.out.println("test count " + q.getCount());
			}
		}
		
		else if((col - 1) >= 0)
		{
			System.out.println("Checking east");
			if(grid[row][col-1] == 1)
			{
				if(grid[row][col] == -1)
				{
					grid[row][col-1] = grid[row][col] + 2;
				}
			
				else
				{
					grid[row][col-1] = grid[row][col] + 1;
				}
			
				Coordinate x = new Coordinate(row, col - 1);
				System.out.println("third if in neighbor");
				System.out.println("enqueue");
				q.enqueue(x);
				System.out.println("test count " + q.getCount());
			
			}
		}
		
		else if((col + 1) <= grid[0].length)
		{
			System.out.println("checking west");
			if(grid[row][col+1] == 1)
			{
				if(grid[row][col+1] == -1)
				{
					grid[row][col+1] = grid[row][col] + 1;
				}
			
				else
				{
					grid[row][col+1] = grid[row][col] + 1;
				}
			
				Coordinate x = new Coordinate(row, col + 1);
				System.out.println("fourth if in neighbor");
				System.out.println("enqueue");
				q.enqueue(x);
				System.out.println("test count " + q.getCount());
			}
		}
		
		else
		{
		
		}
		
		System.out.println("dequeue in neighbor");
		q.dequeue();
		
		
	}
 
Physics news on Phys.org
It looks like you're not even getting to those last two outer else if statements because if

Code:
(row - 1) >= 0 || (row + 1) <= grid.length

Then you don't get to test if

Code:
(col - 1) >= 0 || (col + 1) <= grid[0].length

Yeah, like you said, I suppose that was an obvious mistake. Funny how those get you all the time no ;)

======================================
Arts, crafts and sciences uplift the world of being and are conducive to its exaltation
~Baha'u'llah
 
Last edited:

Similar threads

Replies
3
Views
4K
Replies
7
Views
2K
Replies
7
Views
3K
Replies
1
Views
4K
Replies
11
Views
9K
Replies
8
Views
13K
Replies
3
Views
2K
Replies
12
Views
2K
Back
Top