Moving around a 2D array

cyrow's Avatar, Join Date: Nov 2007
Go4Expert Member
Read the attached file.
1.start with ‘X’ in array[0][0]
2.Move to Right if end is reach and still Right, ‘X’ appears on left side.
3.Move to Left if end is reach and still Left, ‘X’ appears on Right side.
4.Move to Up if end is reach and still Up, ‘X’ appears from bottom.
5.Move to Down if end is reach and still Down, ‘X’ appears from top.
6. If there is an obstatcle in the way, program beep
Code:
import java.io.*;
import java.util.*;
class ***{
	public static void main(String[] args)throws IOException{
	//	Thread t = Thread.currentThread();
		
		int maxcol = 60;
		int maxrow = 20;
		int colpos = 0;
		int rowpos = 0;
		char[][]array = new char[20][60];

	
		Scanner in = new Scanner(new FileReader("obstruct.txt"));	


			int i =0;
			int j =0;
			System.out.print(array[i][j]='X');
			
		 for (i =1; i<array.length;i++){
		 	String ss = in.nextLine();
			  for(j = 1; j<array[i].length;j++){
			   	array[i][j]= ss.charAt(j);
			   	System.out.print(array[i][j]);
			   }
			   System.out.println("  ");
		 }
	
		int ans = check();
		if (ans==1){
		right(array,rowpos, colpos,ans,maxcol);	
				PrintResults(array);
		}else if(ans ==2){
			left(array,rowpos, colpos,ans,maxcol);
					PrintResults(array);
		} else if (ans ==3){
			up(array,rowpos, colpos,ans,maxrow,maxcol);	
				PrintResults(array);	
		}else if(ans ==4){
			down(array,rowpos, colpos,ans,maxcol,maxrow);
			PrintResults(array);
		}else{
				Quit(ans);
		}
	}//end main
	
	public static int check(){
		Scanner in = new Scanner(System.in);
			System.out.println("1.Right"+"  "+ "2. Left"+" "+"3. Up"+" "+"4. Down"+" "+"5.Quit");
			int choice = in.nextInt();
			return choice;
	}	
		
	public static boolean isEmpty(char[][]arr, int rpos,int cpos){
			return ((arr[rpos][cpos])==0);
		}
		
	
	public static void right(char[][]ar, int rpos, int cpos, int answ, int mcol){
	
	
	if((rpos == 0)&&(cpos>=0)&&(cpos<mcol-1)){
		cpos++;
		
		if(isEmpty(ar,rpos, cpos)){
			
			ar[rpos][cpos] = 'X';
			System.out.print(ar[rpos][cpos]);
		}else if(!isEmpty(ar,rpos, cpos)){
			java.awt.Toolkit.getDefaultToolkit().beep();
		}		
	 }
	
	  
	}	
	
	public static void left(char[][]ary,int ropos, int copos,int answer, int mxcol){
		if((ropos >=0)&&(copos>=0)&&(copos<mxcol)){	
			copos = mxcol-1;
			
			
		if(isEmpty(ary,ropos, copos)){
			ary[ropos][copos] = 'X';
			 System.out.print(ary[ropos][copos]);
		}else if(!isEmpty(ary,ropos, copos)){
			java.awt.Toolkit.getDefaultToolkit().beep();
		}
			}
}
	
	public static void up(char[][]arry,int rrpos, int ccpos,int answ, int mxrow, int mxcol){
			if((rrpos < mxrow)&&(ccpos>=0)&&(ccpos<mxcol)){
			rrpos = 0;
		if(isEmpty(arry,rrpos, ccpos)){
			arry[rrpos][ccpos] = 'X';
			 //System.out.print(arry[rrpos][ccpos]);
		}else if(!isEmpty(arry,rrpos, ccpos)){
			java.awt.Toolkit.getDefaultToolkit().beep();
		}
	}
}
	
	public static void down(char[][]array1,int rowpos1, int colpos1,int answer1, int mxcol1, int mxrow1){
		if((rowpos1 <= 0)&&(colpos1>=0)&&(colpos1<mxcol1)){
			rowpos1 = mxrow1 - 1;
		
		if(isEmpty(array1,rowpos1, colpos1)){
			array1[rowpos1][colpos1] = 'X';
			System.out.print(array1[rowpos1][colpos1]);
		}else if(!isEmpty(array1,rowpos1, colpos1)){
			java.awt.Toolkit.getDefaultToolkit().beep();
			array1[rowpos1][colpos1++]='X';
			System.out.print(array1[rowpos1][colpos1]);
		}
	}	
}
	
	public static void Quit(int ansChoice){
		System.exit(0);
	}
	
	public static void PrintResults(char [][]a){
		for (int i =1; i<a.length;i++){
		  for(int j = 1; j<a[i].length;j++){
			  System.out.print(a[i][j]);
		  }
			   System.out.println("  ");
		 }
		}
}//end class
Code not working the way it should, any insights would help

Last edited by shabbir; 6Feb2008 at 18:05.. Reason: Code block
shabbir's Avatar, Join Date: Jul 2004
Go4Expert Founder
Added code block and removed attachment as attachment had nothing related to the query.
oogabooga's Avatar
Ambitious contributor
You must specify how your code is not working.
What's the problem?