# Infinite Loop in my code.

• November 15th, 2012, 09:32 PM
Vinster271
Infinite Loop in my code.
Basically we are give a 2D array and we have to navigate a path out. 1's represent path and 0's represent "swamp" The game is set to stop you if you come to an edge, and change your current space to "-1", to stop you program to keep going back and forth.
All I get is an infinte loop saying STEP TO [2,3]

Code :

```/* Program9.java   */   import java.io.*; import java.util.*;     public class Program9 { public static void main(String[] args) { int myRow=2, myCol=3; // you are dropped into the swamp at: [2][3]   int[][] swamp1 = { { 0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,1 }, { 0,0,0,1,0,0,0,0,1,0 }, { 0,0,0,1,0,0,0,1,0,0 }, { 0,0,0,0,1,0,1,0,0,0 }, { 0,0,0,0,1,0,0,1,0,0 }, { 0,0,0,0,1,0,0,0,1,0 }, { 0,0,0,0,0,1,0,1,0,0 }, { 0,0,0,0,0,0,1,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0 } };   printSwamp( "SWAMP1",swamp1 ); printEscapePath( swamp1, myRow,myCol );     // Now swamp2   myRow=2; myCol=8; // you are dropped into the swamp at [2][8]   int[][] swamp2 = { { 0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0 }, { 0,0,1,0,0,0,0,1,1,0 }, { 0,0,0,1,0,0,1,0,0,0 }, { 0,0,0,0,1,1,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0 }, { 0,0,0,0,0,0,0,0,0,0 } };   printSwamp( "\nSWAMP2",swamp2 ); printEscapePath( swamp2, myRow,myCol );   } // END MAIN   // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -   // DO NOT MODIFY THIS METHOD - USE AS GIVEN   private static void printSwamp(String label, int[][] swamp ) {   System.out.println( label ); for(int r = 0; r < swamp.length; r++) { for(int c = 0; c < swamp[r].length; c++) System.out.print( swamp[r][c] + " "); System.out.println(); } }   // DO NOT MODIFY THIS METHOD - USE AS GIVEN   private static void printEscapePath(int[][] swamp, int myRow, int myCol) {   int[] coords = new int[2]; coords[0]=myRow; coords[1]=myCol;   System.out.println("STARTING AT: " + "["+ myRow + "][" + myCol + "]");   while ( !onEdge( swamp, coords ) ) { // nextStep returns true if there IS a safe step, else returns false // If it returns true then before it returns, it marks the spot you are sitting on as -1 // then updates the x and y inside the coords to be the new coords of where it is stepping to. // You must mark your curr position as -1 so you don't keep going back and forth   if ( nextStep( swamp, coords ) ) { System.out.println( "STEPPED TO: [" + coords[0] + "][" + coords[1] + "]" ); } else // YOU'RE CROC MEAT :=( { System.out.println( "STRANDED AT: [" + coords[0] + "][" + coords[1] + "]" ); return;   } // END WHILE NOT OUT OF SWAMP YET   // IF YOU MAKE IT HERE THEN YOU ARE ON THE EDGE .. FREEDOM!!! }   System.out.println( "ESCAPED AT: [" + coords[0] + "][" + coords[1] + "]" );   } // END PRINT ESCAPE PATH   // ###############################################################   // YOU MUST WRITE THIS METHOD   // LOOKS AT EVERY ADJACENT SQUARE TO SEE IF IT'S A 1 // IF IT IS, THEN THE CURRENT X,Y IS CHANGED TO -1 (i.e. BEEN HERE) // AND THE COORDS ARE CHANGED TO THOSE OF THE NEARBY SQAURE WITH A 1 IN IT // IF NO SAFE STEP IS FOUND THEN JUST RETURN FALSE. DO NOT MODIFY COORDS   private static boolean nextStep( int[][] swamp, int[] coords ) { int myRow = coords[0]; int myCol = coords[1]; int temp = 0; int x = 0; int y = 0; y = myRow; x = myCol; if (swamp[x+1][y] == 1)//Moving North { temp = swamp[x-1][y]; swamp[x][y] = -1; swamp[x][y] = swamp[x+1][y]; return true; } if (swamp[x+1][y] == 1)//Moving South { temp = swamp[x][y]; swamp[x][y] = -1; swamp[x][y] = swamp[x+1][y]; return true; } if (swamp[x][y-1] == 1)//Moving East { temp = swamp[x][y-1]; swamp[x][y] = -1; swamp[x][y] = swamp[x][y-1]; return true; } if (swamp[x][y+1] == 1)//Moving West {   swamp[x][y] = -1; swamp[x][y] = swamp[x][y+1]; return true; } if( swamp[x-1][y-1] == 1)//Moving NorthWest [-1][-1] { temp = swamp[x][y]; swamp[x][y] = -1; swamp[x][y] = swamp[x-1][y-1]; return true; } if(swamp[x-1][y+1] == 1)//Moving NorthEast [-1][+1} { temp = swamp[x][y]; swamp[x][y] = -1; swamp[x][y] = swamp[x-1][y+1]; return true; } if(swamp[x+1][y-1] == 1)//Moving SouthWest [+1][-1] { temp = swamp[x][y]; swamp[x][y] = -1; swamp[x][y] = swamp[x+1][y-1]; return true; } if(swamp[x+1][x+1] == 1)//Moving SouthEast [+1][+1] { temp = swamp[x][y]; swamp[x][y] = -1; swamp[x][y] = swamp[x+1][y+1]; return true; }     else { return false; // just to make it compile you edit as needed } }     // YOU MUST WRITE THIS METHOD   // RETURNS TRUE IF YOUR CURR COORDS ARE ON THE FIRST OR LAST ROW OR COLUMN // i.e RETURNS TRUE IF YOU ARE ON THE EDGE/BORDER OF THE SWAMP // ELSE RETURNS FALSE   private static boolean onEdge( int[][] swamp, int[] coords ) { if (coords[0] == 0) { return true; } if (coords[0] == 10) { return true; } if (coords[1] == 0) { return true; } if (coords[1] == 10) { return true; }   else { return false; // just to make it compile you edit as needed } } }```
• November 16th, 2012, 02:46 AM
mperemsky
Re: Infinite Loop in my code.
Your if statements in nextStep() need to be updated
Code :

```//Moving North: [x-1][y] //Moving SouthEast [x+1][y+1]```

onEdge should be comparing to 9 to see if it on an outer edge, not 10. The index value of the 10th entry is 9