Hjälp med att förklara hur whileloopar i Java fungerar!

Permalänk
Medlem

Hjälp med att förklara hur whileloopar i Java fungerar!

Hejsan. Jag har fått en hel blackout.
Jag måste bara få förklarat hur en whileloop fiungerar, jag har läst diverse hemsidor, kollat kod, läst litteraturen. Men jag vill gärna få det "översatt" till svenska. Så jag kan relatera det till något.

Hur skriver man t.ex

Om ett tal är mindre än 0 så ska det komma upp JOptionPane.showMessageDialog ("Talet är negativt"), men om talet är positivt så ska det komma upp en JOptionPane.showMessageDialog ("Var god fyll i ett nytt tal").
Så fort talet är negativt så ska det brytas och inte köras om, men om talet är positivt så ska den gå tills fan går i tofflor igen.

Hjälp mig. Skriv gärna kommentarer stegvis i koden om ni kan, jag vill gärna lära mig och inte vara en copy paster!

Tack på förhand!

Observera!! Jag är inte ute efter att samla in datan än, utan bara att få ett grepp om hur whileloopar fungerar

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem

while // = "Så länge..." (condition) // = "...detta villkor uppfylls..." { // ...gör detta (inom måsvingarna). }

Exempel: "så länge variabeln i är mindre än 10, öka variabeln i med ett heltal"

int i = 0; // Deklarera varabeln i som ett heltal while (i < 10) { i++; // Omskrivning av: i = i + 1; }

Det finns också en annan syntax på while, nämligen denna:

do { // Gör detta... } while // = "...så länge..." (condition); // = "...detta villkor uppfylls."

Samma exempel med denna syntax:

int i = 0; do { i++; } while (i < 10);

De två sätten att skriva en while-loop är viktiga att förstå. Resultatet kommer att bli annorlunda för de två, även om de ser nästan likadana ut. Det beror på att den första kollar att villkoret uppfylls i början av varje iteration (en "vända" i en loop = en iteration). Den andra varianten kollar att värdet uppfylls vid slutet av varje iteration.

Det innebär att i den första varianten kanske innehållet mellan måsvingarna inte körs alls, t.ex. om variabeln i är 10 från början. Medan i den andra varianten, så körs alltid koden mellan måsvingarna minst en gång, innan while kollar om villkoret uppfylls.

Jag ska också påpeka att måsvingarna är frivilliga om loopen består av bara en enda rad. Det gäller alla "control statements" såsom if, else, else if, do-while, while, for, foreach etc. etc.
Detta funkar alltså också bra, så länge det bara är en enda rad:

int i = 5; while (i < 9) i++;

Permalänk
Medlem

int number; // så länge villkoret number är mindre eller lika med 0 är uppfyllt while(number >= 0) { /** * 1. Allt här inne (inom '{' och '}') ekekveras för varje gång loopen körs */ JOptionPane.showMessageDialog ("Var god fyll i ett nytt tal"); // uppdatera number /** * 2. Om villkoret (number >= 0) fortfarande är uppfyllt så hoppar vi upp till 1 igen, annars går vi vidare och kommer till 3. som råkar vara den kod som ligger precis under loopen. */ } /** * 3. Eftersom loopen går oändligt länge när man matar in positiva tal så * vet man att om man har kommit hit har ett negativt tal inmatats */ JOptionPane.showMessageDialog ("Talet är negativt");

Visa signatur

"The devil will find work for idle hands to do."

Permalänk
Medlem

"condition" är ett booleskt uttryck som översätts till "villkor" på svenska. Alltså sant eller falskt. En "while"-loop garanterar att du koden mellan "måsvingarna" körs så många gånger det krävs tills att villkoret är falskt. Det går ju även att göra en oändlig loop vilket kort och gott är om uttrycket alltid är sant.

En enkel jämförelse är att om du vill att något skall ske EN gång så gör du en if-sats. Vill du att det skall ske FLERA gånger, gör det till en while-loop. Samma villkor går att använda.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Medlem

Tack så extremt mycket för hjälpen!
Kan alltid lita på gamla bettan

Tack alla!

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus