Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Zahada s polem v Jave

Zdravim,
takze mam vytvorenou metodu, ktera naplni dvojrozmerne ctvercove pole nejstejnymi nahodnymi cisly. Potrebuju vytvorit jinou metodu, ktera mi zjisti zda mezi sousedy kontretniho prvku (souradnice budou prarametry metdody) je cislo 0. Je mi jasne ze sousede se v indexu lisi o jednicku. Jak mam ale zabezpecit, abych si pri kontrole sousedu nesahl mimo pole?

Predem diky. MaSo

Předmět Autor Datum
Proste budes pre kazdeho suseda najprv kontrolovat, ci jeho suradnice nie su mimo. Velkost pola a je…
x-22 08.03.2006 14:14
x-22
public static void engine(int [][]pole, int y, int x) { int sn=x-1; int sd=x+1; int sl=y-1; int sp=y…
MaSo 08.03.2006 18:23
MaSo
imho je to dost zmatečné. Pořád zjištuješ délku matice jen (sloupečku/řádku), chybí mi tam něco jako…
AZOR 08.03.2006 19:28
AZOR
Me staci jenom jeden rozmer, protoze vim, ze moje matice bude vzdycky ctvercova. A s tou metodou swa… poslední
MaSo 08.03.2006 19:57
MaSo
public static void engine(int [][]pole, int y, int x)
	   {
	   		int sn=x-1;
	   		int sd=x+1;
	   		int sl=y-1;
	   		int sp=y+1;
	   		
	   		if  (sn<0) sn = x;
   			if  (sd > pole.length-1) sd = x;
   			if  (sl<0) sl = y;
   			if  (sp>pole.length-1) sp = y;
	   			   		
			if ((pole[sn][y] != 0)&&(pole[sd][y] != 0)&&(pole[x][sl] != 0)&&(pole[x][sp] != 0))
					{
						System.out.println();
						System.out.println("Vedle zvoleneho cisla neni prazdne misto!");
						System.out.println("Zadejte souradnice znovu.");
						System.out.println();
					}
				   	    
	   	    if (pole[sn][y] == 0)
   					{
   						int pom = pole[x][y];
   						pole[x][y] = pole[sn][y];
   						pole[sn][y]=pom;
   					}
   					
   			if (pole[sd][y] == 0)
   					{
   						int pom = pole[x][y];
   						pole[x][y] = pole[sd][y];
   						pole[sd][y]=pom;
   					}
   		    if (pole[x][sl] == 0)
   					{
   						int pom = pole[x][y];
   						pole[x][y] = pole[x][sl];
   						pole[x][sl]=pom;
   					}
   					
   	        if (pole[x][sp] == 0)
   					{
   						int pom = pole[x][y];
   						pole[x][y] = pole[x][sp];
   						pole[x][sp]=pom;
   					}
	   	    }

Tak jsem to vyresil!;-) Tato metoda kontroluje, zda prvek na zadanem miste nema nuloveho souseda. Pokud ma tak je prohodi. Dal jsem to sem, kdyby to nekdy nekdo jiny taky potreboval, ale o tom pochybuju...:-)

imho je to dost zmatečné.
Pořád zjištuješ délku matice jen (sloupečku/řádku), chybí mi tam něco jako pole[x].length
dvojrozměrné pole v javě nemusí bejt čtvercové a dokonce ani ne obdelnikové.
A pak bych si alespon místo opakovná těch 3 řádku udělal nějakou metodu:
public static void swap(a,b) která by dělala a->b,b->a.

Zpět do poradny Odpovědět na původní otázku Nahoru