Hjælp til indlæring af Java.

Tags:    java

<< < 12 > >>
Jeg er stødt på endnu et problem i min vej for at lære at programmere. Denne gang skal jeg lave et program der tæller 1+2+3+4....+20 og udregner hvad det bliver. Jeg kan regne ud jeg skal bruge en while/for løkke, men aner ikke hvordan.

På forhånd tak



int result = 0;
for(int i = 1; i < max; ++i) result += i;

For hver iterering lægger den i til result og i bliver inkrementeret med 1. Det lyder som hvad du er ude efter.



Wow, fattede nix af det du lige skrev :P Bogen har ikke skrevet noget lignende. Kan du forklare lidt bedre?



Ok, jeg skal forsøge. Du nævner selv 'for' løkken i dit oprindelige indlæg, så jeg antager du i hvert fald basalt ved hvad den går ud på.
Den første del af den, 'int i = 1', er initialiseringen. Den opretter en variabel som er specifik for 'for' løkken og kan derfor ikke tilgåes udenfor den. Denne bliver kun eksekveret én gang, inden 'for' løkken "kører".
Den næste del, 'i < max', er selve testen, som bliver testet ved hver iterering. Her har jeg brugt en fiktiv variabel, 'max', som kan erstattes med en konstant f.eks. 20. Den tester at 'i' er mindre end 'max' (eller 20 eller hvad du nu skriver). Hvis den er fortsætter itereringen. Hvis ikke så afbrydes den og eksekveringen fortsætter efter 'for' løkken.
Den sidste del, '++i', er inkrementeringen hvor man kan plusse, minus, gange, dividere eller gør hvad man nu vil. Her lægger vi en til 'i' inden at testen bliver, tja, testet. Dette sker også ved hver iterering, dog ikke den første.
Herefter lægger vi bare 'i' til variablen 'result'. Ved første iterering bliver 1 lagt til 0 som så bliver til 1. Næste iterering bliver 2 lagt til 1 som bliver 3 osv. osv. osv...



Lyder meget logisk, men når jeg vil have den til at skrive det ud på skærmen skriver den bare: 190. Kan ikke finde ud af hvorfor.



Det er også resultatet af 1+2+3+...+20. :)



Indlæg senest redigeret d. 13.08.2008 20:15 af Bruger #345
Ja, men ville gerne have den til at skrive det sådan:
1
3 osv.

:)




Så skal du bare få den til at skrive det ud inde i selve løkken.

int result = 0;
for(int i = 1; i < 20; ++i)
{
result += i;
System.out.println(result);
}



Så skal du bare få den til at skrive det ud inde i selve løkken.

Fold kodeboks ind/udJava kode 



Hvis du ønsker at 20 også skal lægges til i sidste ende, skal du lave en lille rettelse i koden:
Fold kodeboks ind/udJava kode 


I linjen hvor du starter for-løkken, skal du skifte i < 20 ud med i <= 20, derved bliver testen ikke om i er mindre end 20, men om i er mindre eller lig med 20 og derved kommer 20 også med i din beregning. Præcis som du har skrevet i den første besked.

PS: har skrevet koden ind i kodebokse (det ser pænere ud :D)



Indlæg senest redigeret d. 14.08.2008 00:20 af Bruger #12914
for løkke vs while løkke
------------------------
Du skriver i dit indlæg at du ved du skal bruge en for/while løkke. Det er også meget godt, da du er godt på vej til at forstå de forskellige strukturer. Der er i bund og grund en stor forskel på de to, rent konceptmæssigt. Man plejer at kalde for løkken for en "sweep" løkke og while løkken for en "search" løkke. Navnene peger lidt på hvornår man bør bruge den ene type løkke frem for den anden. Sweep (for) løkken "fejer" hen over alle elementer i din liste, det vil sige at den er god i dette eksempel hvor du skal gøre noget ved hvert enkelt element. Search (while) vil typisk løbe igennem listen og finde et bestmt element og så stoppe.

Held og lykke med programmeringen



Faktisk er det ikke nødvendigt med en løkke, men det er så en helt anden historie :)



<< < 12 > >>
t