public class testing { public static void main(String[] arguments) { int[] arrayMedTal = {10,20,30,50};
int index = 0; int sum = 0; int gns = 0;
for(index = 0; index<arrayMedTal.length; index++) { sum = sum + arrayMedTal[index]; } gns = sum / (index+1); System.out.println(\"Summen af tal i array: \" + sum); System.out.println(\"Antal tal i array: \" + index); System.out.println(\"Gennemsnit: \" + gns); } }
Der er lidt besværligt at bruge ArrayList til det formål. Da en ArrayList kun kan indeholde objekter, skal du wrappe og unwrappe dine karakterer. Ved du ikke på forhånd, hvor mange karakterer du skal bruge, så du kan bruge et Array istedet?
public double gennemsnit(ArrayList list) { double sum = 0; for ( int i = 0 ; i < list.size() ; i++ ) { sum += ((Integer)(list.get(i))).intValue(); } return( sum/list.size() ); }
Jo, men for at gemme karakterene i en ArrayList skal de wrappes. Det vil de stadig være, hvis man efterfølgende bruger toArray(), og så er der ikke meget vundet.
public double gennemsnit(ArrayList list) { double sum = 0; for ( int i = 0 ; i < list.size() ; i++ ) { sum += ((Integer)(list.get(i))).intValue(); } return( sum/list.size() ); } }
Du kan da bare regne på Double som er et objekt så er det ikke noget problem.
Forresten er det en god ting at bruge en Iterator til at gå igennem en Collection istedet for en for løkke. Man kan ligeså godt bruge den funktionalitet der er lavet til formålet.
Så vidt jeg husker er kaster Iteratoren en Exception, hvis der ændres i de bagved liggende data. D.v.s. den beskytter ikke mod fejl, men den sørger for at de opdages, så der ikke kommer inkonsistente data.
Jeg siger heller ikke at man kun skal bruge den ved flertrådede apps, kun at jeg er tilbøjelig til at vælge den nemmeste metode - mindre tastearbejde og mindre overhead - når jeg ikke kan se en direkte gevinst. Jeg er doven af natur, og jeg dyrker det:-))
hmm, det kan jeg nu ikke lige finde i API\'en at den skulle gøre.
Det er forresten også en ikke pæn måde at opdage tråd problemmer på, Synchronize ville nok være noget bedre, så der ganske enkelt ikke sker sådanne ting.
Hehe, jeg synes nu Iterator er nemmere end for løkken :)
En helt anden ting hvis man bruger en for løkke skulle man tage og finde ud af .size() før man laver løkken, ellers skal den beregne størrelsen for hvert gennemløb, og det giver dårlig performance.
Compileren kan under ingen omstændigheder gøre det, måske kan JVM\'en hvilket jeg tvivler på.
For hvad hvis size() ændrer sig, JVM\'en kan ikke bare gætte sig til om det sker eller ej.
I følge et glimrende foredrag på JavaOne sidste år, er det en vigtig ting at flytte den ud hvis man ved der ikke ændres på size under gennemløbet af for løkken.
Du har ret. Det skal jeg have i baghovedet fremover.
Synes godt om
Ny brugerNybegynder
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.