/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Forløkker
Fra : bunallo


Dato : 25-01-05 02:42

Jeg kalder en metode 200 gange med en forløkke. Men i denne metode vil jeg
gerne nøjes med kun at udføre noget af kroppen én gang mens resten af
kroppen skal udføre alle 200 gange. Kan dette lade sige gøre?

A a = new A();

for (int i = 0; i <=199;)
{a.test();
i++}

class A {

public void test() {

System.out.println("START!"); // Denne del skal kun skrives ud første gang
metoden kaldes

System.out.println("[][][]][][][][][][][]"); // Denne del skal udskrives
alle 200 gange.

}
}



 
 
anonymous (25-01-2005)
Kommentar
Fra : anonymous


Dato : 25-01-05 06:24

bunallo wrote:
> Jeg kalder en metode 200 gange med en forløkke. Men i denne metode vil jeg
> gerne nøjes med kun at udføre noget af kroppen én gang mens resten af
> kroppen skal udføre alle 200 gange. Kan dette lade sige gøre?
>
> A a = new A();
>
> for (int i = 0; i <=199;)
> {a.test();
> i++}
>
> class A {
>
> public void test() {
>
> System.out.println("START!"); // Denne del skal kun skrives ud første gang
> metoden kaldes
>
> System.out.println("[][][]][][][][][][][]"); // Denne del skal udskrives
> alle 200 gange.
>
> }
> }
>
>
for (int i = 0; i < 200; i++) {
   if (i == 0) {
      System.out.println("START");
      continue;
   }
   System.out.println("whatever");
}

Simon [2700] (26-01-2005)
Kommentar
Fra : Simon [2700]


Dato : 26-01-05 10:35



> for (int i = 0; i < 200; i++) {
> if (i == 0) {
> System.out.println("START");
> continue;
> }
> System.out.println("whatever");
> }

Hej,
hvad gør 'continue;' ?
mvh.Simon



Søren Reinke (26-01-2005)
Kommentar
Fra : Søren Reinke


Dato : 26-01-05 11:05

Simon [2700] wrote:
>>for (int i = 0; i < 200; i++) {
>>if (i == 0) {
>>System.out.println("START");
>>continue;
>>}
>>System.out.println("whatever");
>>}
>
>
> Hej,
> hvad gør 'continue;' ?
> mvh.Simon
>
>

Hvis continue ikke havde været der var der blevet udskrevet 'whatever' i
din tur i løkken der også skrev 'START'.

Det continue gør er at den siger 'jeg er færdig med denne rundtur i for
løkken' hop start næste tur.
Derved slipper du for at havde en 'else' rundt om 'whatever' delen.

Hilsen Søren Reinke

Kasper G. Christense~ (26-01-2005)
Kommentar
Fra : Kasper G. Christense~


Dato : 26-01-05 11:09

>>> for (int i = 0; i < 200; i++) {
>>> if (i == 0) {
>>> System.out.println("START");
>>> continue;
>>> }
>>> System.out.println("whatever");
>>> }

> Hvis continue ikke havde været der var der blevet udskrevet 'whatever' i
> din tur i løkken der også skrev 'START'.

Præcis - du kom først, har lige skrevet noget lignende i et andet indlæg

> Derved slipper du for at havde en 'else' rundt om 'whatever' delen.

Hvorfor man så ellers skulle ønske at slippe for det!? I andre
situationer kan continue dog være ganske praktisk, men i denne er det
vel lidt en smagssag - eller er der performance at vinde?

Mvh. Kasper

--
Besøg mig på nettet: http://www.kaspershjemmeside.dk

Kasper G. Christense~ (26-01-2005)
Kommentar
Fra : Kasper G. Christense~


Dato : 26-01-05 11:06

>>for (int i = 0; i < 200; i++) {
>>if (i == 0) {
>>System.out.println("START");
>>continue;
>>}
>>System.out.println("whatever");
>>}

> hvad gør 'continue;' ?

Det kunne jeg heller ikke lige komme på, men
http://www.justfuckinggoogleit.com/

continue starter næste iteration af en løkke (dvs. hvis der ikke skal
itereres mere, forlades løkken naturligvis).Man kunne også sige:
continue springer til starten af en løkke (lidt goto-agtigt). Altså kan
ovenstående kodestump vel lige så godt være:

for (int i = 0; i < 200; i++) {
if (i == 0) {
System.out.println("START");
} else {
System.out.println("whatever");
}
}

eller hvis nu spørgeren rent faktisk vil opnå præcist det han skrev: At
det første kun udføres 1 gang, mens det øvrige udføres hver gang:

for (int i = 0; i < 200; i++) {
if (i == 0) {
System.out.println("START");
}
System.out.println("whatever");
}


Mvh. Kasper

--
Besøg mig på nettet: http://www.kaspershjemmeside.dk

Kasper G. Christense~ (25-01-2005)
Kommentar
Fra : Kasper G. Christense~


Dato : 25-01-05 06:59

> Jeg kalder en metode 200 gange med en forløkke. Men i denne metode vil jeg
> gerne nøjes med kun at udføre noget af kroppen én gang mens resten af
> kroppen skal udføre alle 200 gange. Kan dette lade sige gøre?

Du kan bruge det forslag du allerede har fået, hvor du flytter den
specifikke start-del uden for metoden. Hvis dette ikke er
muligt/praktisk, kan du overveje om du ikke i stedet kunne bruge 2
metoder (en start-metode og en resten-metode). Endelig er der jo den
mulighed at lade metoden tagen en parameter, der f.eks. angiver hvilket
nr. gennemløb du er ved, eller måske blot en boolean der angiver om
start-delen skal udføres. Du kan også have en variabel internt i
objektet du kalder metoden på, som holder styr på om metoden er blevet
kaldt før.

Når dette er sagt: Overvej dit design. Er det en hensigtsmæssig metode
der ikke gør det samme hver gang? I hvert fald vil jeg mene det lyder
mest sandsynligt at en parameter er den mest gennemskuelige løsning,
hvis ikke du simpelt hen kan splitte op i flere metoder.

Vil du have hjælp til et mere hensigtsmæssigt design, hvor disse
tilsyneladende krumspring ikke er nødvendige, så fortæl lidt mere om
hvad du laver.

Mvh. Kasper

--
Besøg mig på nettet: http://www.kaspershjemmeside.dk

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste