24. maj 2006 - 02:53Der er
3 kommentarer og 1 løsning
Brug af lokalt array sammen med if sætning i en rekursiv metode
Mit problem er at jeg har en rekursiv metode, og i den skal jeg bruge et lokalt dobbelt array af ints. Jeg har så en if metode, og hvis den er sand, så er der ingen problemer for så skal jeg definere mit array igen. Men hvis if-sætningen er falsk, skal jeg ikke gøre noget, da jeg så har de data, jeg skal bruge.
public void Run() { int Fields[][]; if (1 == 2) { Fields = new int[8][8]; } else { // Her er mit problem. } Run(); }
Mit problem består i at jeg ikke kan finde ud af hvad jeg skal skrive i else-delen. For at kunne bruge Fields som en lokal variabel skal jeg jo definere den i begge grene, men det kan jeg ikke i else-delen, da ved jeg at jeg har data i arrayet, som ikke må slettes. Så hvad kan jeg så skrive/gøre?
Tag jer ikke af if-sætningen, den er bare et hurtigt eksempel, jeg kogte sammen, jeg ved godt det er en uendelig løkke men jeg lavede det bare for at illustrere mit problem ganske kort :)
Suk...jeg vidste der nok skulle være en eller anden enkelt løsning :(
Nå men det er såmænd en god ide men giver mig så et nyt problem.
public class Test { int[][] x = new int[2][2]; public static void main(String[] args) { new Test().Run(new int[2][2]); }
public void Run(int[][] y) { System.out.println(x[0][0]); System.out.println(y[0][0]); x[0][0]++; System.out.println(x[0][0]); System.out.println(y[0][0]); if (x[0][0] < 2) { Run(x); } } }
Problemet er at 2. gang Run bliver kørt, når x[0][0] bliver talt en op til 2, ændrer y sig også. Jeg kan regne ud at det vel må skyldes at det kun er en reference til y jeg overfører, og ikke et nyt y, men jeg kan ikke se skoven for bare træer, eller med andre ord, hvordan jeg løser det.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.