Avatar billede nutten Nybegynder
27. april 2001 - 23:07 Der er 9 kommentarer og
1 løsning

Bruge tællevariabel videre i programmet?

Jeg har:

for(bla. bla.){
    if(bla. bla.){
      i++;
    }
}

Jeg vil gerne bruge variablen i, som parameter til et array. F. eks:
i bliver 7 i for-løkken, så
int[] test = new int[7];

Dette array erklæres uden for denne for-løkke.
Kan det lade sig gøre?

Avatar billede disky Nybegynder
27. april 2001 - 23:10 #1
ja men så skal du også erklærer \'i\' uden for din \'for-løkke\'

f.eks.

int i=0;
for(bla. bla.)
{
    if(bla. bla.)
    {
      i++;
    }
}
int test[]=new int[i];

Avatar billede nutten Nybegynder
27. april 2001 - 23:43 #2
Jeg har:
class hej{
// Sker en masse
public static int i=0;
{
for(bla. bla.) {
    if(bla. bla.){
      i++;
    }
}
}
int test[]=new int[i];

Så det virker ikke :(
Avatar billede disky Nybegynder
28. april 2001 - 00:27 #3
det er ikke sikkert dette her giver mening som program, men det compiler fint.
class hej
{
    // Sker en masse
    public static int i=0;

    void TEST()
    {
        for(int x=0;x<1746;x++)
        {
            if(1==1)
            {
                i++;
            }
        }
        int test[]=new int[i];
    }
}   


Hvad er problemmet siger du ?
Avatar billede nutten Nybegynder
28. april 2001 - 00:39 #4
Jeg ved ikke hvad problemet reelt er, men jeg ved det ikke virker, som jeg har skrevet det ovenfor.
Det jeg har skrevet compiler også fint, men når programmet køres laves test = new int[i] med i=0 og ikke i++. Dvs. du har skrevet int i = 0, og så vil programmet lave test = new int[0].

Det er mine erfaringer.
Avatar billede disky Nybegynder
28. april 2001 - 00:48 #5
ja det er klart, hvis din \'if\' sætning ikke er opfyldt forsøger den at allokere 0 pladser og det går ikke.

prøv at såt i=1 til at starte med. Så for du godt nok altid allokeret 1 plads for meget men en int extra betyder jo ikke noget.

Eller sæt en if rundt om din new int[i] som sætter i=1 hvis i=0

altså

if(i==0)
{
  i=1;
}
int test[]=new int[i];

så skulle det virke (hvis jeg forstår dit problem korrekt)
Avatar billede nutten Nybegynder
28. april 2001 - 00:55 #6
Hvis jeg alligevel skal sætte i til hvad jeg ved den bliver, kan jeg jo bare erklære test = new int[i] med det samme.
Jeg tæller i en for-løkke og det antal gange jeg får ud af det, vil jeg bruge som arraylængde.
Avatar billede disky Nybegynder
28. april 2001 - 00:59 #7
class hej
{
    // Sker en masse
    public static int i=0;

    void TEST()
    {
        for(bla bla)
        {
            if(et eller andet == noget andet)
            {
                i++;
            }
        }
        if(i==0) i=1; //skal sikre at 1!=0
        int test[]=new int[i];
    }
}   


Hvad nu ?
Avatar billede nutten Nybegynder
28. april 2001 - 01:06 #8
Ville det genere dig meget, hvis jeg ikke har pakket min for-løkke ind i en void blabla()?
Avatar billede disky Nybegynder
28. april 2001 - 09:30 #9
den skal jo ligge i en metode på en eller anden måde.

Prøv at kom med hele den klasse eller metode koden er den del af
Avatar billede nutten Nybegynder
01. maj 2001 - 15:43 #10
Det virker endeligt, du havde ret jeg satte en void noget() ind og det fungede.

Tak for hjælpen.
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