Avatar billede themepark Nybegynder
24. maj 2006 - 02:53 Der 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 :)
Avatar billede arne_v Ekspert
24. maj 2006 - 03:01 #1
tror du ikke at du skal sende det array med over som argument ?
Avatar billede themepark Nybegynder
24. maj 2006 - 17:26 #2
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.
Avatar billede themepark Nybegynder
24. maj 2006 - 17:48 #3
Nevermind, jeg kom i tanke om at jeg kunne klone den og så overføre klonen som parameter i stedet for, og så fungerer det.

Smid et svar, arne :)
Avatar billede arne_v Ekspert
24. maj 2006 - 18:18 #4
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester