Avatar billede machholdt Nybegynder
16. marts 2001 - 13:58 Der er 20 kommentarer og
1 løsning

Problemer for en newbie

Jeg er helt ny i java...

Omskriv programmet så det istedet bruger while løkken.

public class gg
{
  public static void main(String args[])
  {
    int max = 10;
    int midt = max  / 2;
    int i;

    for (i = 1; i < max; i = i + 1)
    {
      System.out.println(\"i = \" + i);
      if (i == midt)
        System.out.println(\"Vi er midtvejs\");
    }
  }
}

HVordan gør jeg det???? og venligst forklar hvorfor!
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 14:01 #1
i=1;
while (i < max) {
    System.out.println(\"i = \" + i);
    if (i == midt)
      System.out.println(\"Vi er midtvejs\");
    i = i + 1;
}
Avatar billede disky Nybegynder
16. marts 2001 - 14:01 #2
public class gg
{
  public static void main(String args[])
  {
    int max = 10;
    int midt = max  / 2;
    int i;

    while(i++<max)
    {
      System.out.println(\"i = \" + i);
      if (i == midt)
        System.out.println(\"Vi er midtvejs\");
    }
  }
}

nu kører den så længe i<max og efter test tæller den en op
Avatar billede disky Nybegynder
16. marts 2001 - 14:02 #3
Erik: et spørgsmål hvad er årsagen til at du indsætter {}\'ere på den for mig meget uoverskuelig måde ?
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 14:03 #4
Den gør ikke det samme disky, for den skriver \"Vi er midtvejs\" ud ved
en anden værdi af i. Husk lige i=1; også.
Avatar billede machholdt Nybegynder
16. marts 2001 - 14:03 #5
OK.. jeg mangler lige noget info om de forskellige løkker, jeg fatter ikke hvad de forskellige løkker gør, og hvornår det er bedst at bruge dem??
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 14:03 #6
Må jeg ikke selv om det disky, med {-erne ?
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 14:04 #7
Snak med din lærer, mach :) Her har du lidt inspiration
Avatar billede disky Nybegynder
16. marts 2001 - 14:05 #8
i know, :-)

  Problemer for en newbie 16/03 2001 13:58:53    50 point fra machholdt

Jeg er helt ny i java...

Omskriv programmet så det istedet bruger while løkken.

public class gg
{
  public static void main(String args[])
  {
    int max = 10;
    int midt = max  / 2;
    int i=1;

    while(i<max)
    {
      System.out.println(\"i = \" + i);
      if (i == midt)
      {
        System.out.println(\"Vi er midtvejs\");
      }
      i++;
    }
  }
}

siden du nu kalder dig newbie, tag og sæt {} rundt om if sætninger selvom de kun laver en ting, det er ikke nødvendigt, men gør koden pænere og mere overskuelig
Avatar billede disky Nybegynder
16. marts 2001 - 14:06 #9
erik:

jo selvfølgelig.

jeg undrer mig bare hvorfor folk sætter dem i enden.

Det er da nemmere at overskue når et sæt {}\'ere står oevr hinanden (synes jeg)

jeg vil bare gerne høre hvorfor du lige gør det.
Avatar billede machholdt Nybegynder
16. marts 2001 - 14:06 #10
Eric >> Jeg har skam ikke nogen lærer, jeg sidder herhjemme og fedter lidt rundt med det!!
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 14:08 #11
OOhkaayyyy - det lød som en typisk, irriterende skoleopgave, men kan
jo også findes i en lærebog.

I Java er det strengt taget ligegyldigt om man bruger det ene eller det
andet, for som du kan se er omskrivningen meget nem.

Men for-løkker \"plejer\" man at bruge når man ved hvormange trin
man skal igennem, og while-løkker, når man har et stopkriterium.
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 14:10 #12
disky: jeg sætter altid {-}, selv de gange hvor det ikke er nødvendigt. Derfor
er det ikke nødvendigt for mig at have { og } stående lige under hinanden,
det klarer jeg med indrykning. Og så sparer jeg en linie, og kan dermed overskue
mere på skærmen. Derfor :)
Avatar billede machholdt Nybegynder
16. marts 2001 - 14:12 #13

Erik du får point, men har lige et sidste spørgsmål.. kan man skrive den om så den bryger en do_while løkke?? og hvordan ser den så ud??
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 14:15 #14
Du kan ikke altid bruge en do_while, for indholdet (kroppen) af sådan en udføres
altid. F.eks. er

  for (i=1;i<n;i++) { ... }

ikke altid ækvivalent med

  i=1; do { ....; i++} while (i<n);

det er det nemlig kun hvis n>=2, dvs. indholdet udføres én gang. Men omskrivningen
ovenfor, til while, er præcis det samme som for-løkken. Det er sjældent du har brug
for do-while!
Avatar billede machholdt Nybegynder
16. marts 2001 - 14:19 #15
Nåh ok.. man kan altså ikke bruge do_while men man bruger if og else?? eller hvad?
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 14:21 #16
Man kan bruge do while, hvis man er sikker på at indholdet skal
udføres mindst én gang. F.eks. (skitse):

  do {
    system.out.println(\"Skriv et positivt tal\");
    x = ...indlæse...;
  while (x<0);

Øh, ja, du kan vist ikke lave noget særligt uden if-sætninger :)
Avatar billede machholdt Nybegynder
16. marts 2001 - 14:48 #17
sory.. der skulle et s på men (mens) man bruger if og else!
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 14:54 #18
Jo jo, alle konstruktioner kan skrives indeni hinanden - men man bør
vælge den, der \"egner sig bedst\". Og hellere en while, end en do-while
med en test for om det er første gang ... for nu at tage et eksempel.
Avatar billede machholdt Nybegynder
16. marts 2001 - 15:14 #19
OK tror jeg har fattet det!!! Endnu en gang tak!!!
Avatar billede erikjacobsen Ekspert
16. marts 2001 - 15:18 #20
Ellers kender du adressen på eksperten.dk :)
Avatar billede machholdt Nybegynder
16. marts 2001 - 15:23 #21
HEHE ja
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