1 Lecture 23/2/11 Working with an array Array of user-defined objects (if time permits) 2 MARCH, next Wednesday: Reading week - No lecture 6-7.30, but.

Presentation on theme: "1 Lecture 23/2/11 Working with an array Array of user-defined objects (if time permits) 2 MARCH, next Wednesday: Reading week - No lecture 6-7.30, but."— Presentation transcript:

1 Lecture 23/2/11 Working with an array Array of user-defined objects (if time permits) 2 MARCH, next Wednesday: Reading week - No lecture 6-7.30, but – room B12 Cruciform is available from 7.30- 9.00: Martin O’Shea will consult over any questions on SP1

2 Advert In-class open-book Test 9/3/11 subjects –Strings –Methods –Arrays

3 Test 1 results 39 or less5 40 through 7021 71 or more9 Absent 17 Total52 Those with marks 50 or less should put more effort: (a)Look through previous lecture slides before lectures (b)Try ask questions and do not stop if anything remains unclear; (c)Visit all lab sessions; (d) Try do the same tasks by yourself in DCSIS labs;

4 Array Array is an indexed list of elements of the same type; the index is supplied by default (!) A string array nam[ ] : contains both entries and index. String[] nam ={“John”,“Paul”,“George”,“Ringo”}; Index: 0 1 2 3 Length (the number of entries) is 4 An integer array age[ ]: int age[ ]= {23, 32, 19, 30, 25, 25, 23, 30}; Index: 0 1 2 3 4 5 6 7 Length is 8

5 Work with arrays(1) Data of 5 students: double height[ ]={1.56, 1.72, 1.80, 1.85, 1.90}; //in m double weight[ ]={65.3,80.0,78.1,76.5,112.8}; // in kg Problem: compute the body mass index for all the students, bmi=weight/height 2 (in the US, those with bmi between 20 and 25 are considered of normal weight)

6 Work with arrays(2) Loop for is natural with arrays: the index used as the counter double bmi[ ]=new double[5]; for (int I = 0; I < 5; I + +) bmi[I]=weight[I] / (height[I]  height[I]); If length of student arrays is not known or is variable, put array’s length whatever it is: double bmi[ ]=new double[height.length]; for (int I = 0; I < height.length; I + +) bmi[I]=weight[I] / (height[I]  height[I]);

7 Work with arrays(3) The same result with a method for the bmi: double[ ] bmiind(double h[ ], double w[ ]){ double in[ ]; for (int ii = 0; ii < h.length; ii = ii+1) in[ii]=h[ii]/(w[ii]  w[ii]); return in; } Method bmiind is just a frame box; to make it work, one needs to put within a class this: double[ ] bmi=bmiind(weight, height);

8 Work with arrays(4) Still, no result on the screen!!! Printing arrays is not easy in Java: no innate methods for that! double[ ] bmip(double h[ ], double w[ ]){ double in[ ]; for (int a = 0; a < h.length; a++){ in[a]=h[a]/(w[a]  w[a]); System.out.println(a + “ ’s bmi is “+in[a]);} return in; } double[ ] b=bmip(weight, height); //Outputs and Prints

9 Finding a maximum in an array double x[ ]; //assume taken from somewhere int place=-1; //index of the max entry double maxim=-1000; for (int i = 0; i < x.length; i = i+1) { if (x[i] > maxim) {maxim=x[i]; place=i;} } Question: Make it into a method.

10 Finding maximum : a method int place= -1; //for keeping the index of max entry double findMax(double x[ ]){ //method’s wrap-up double maxim= -1000; for (int i = 0; i < x.length; i = i+1) { if (x[i] > maxim) {maxim=x[i]; place=i;} } } // Note: a trick with “place”

11 Finding the average in an array double x[ ]={1.1, 1.2, 1.6, 2.0,1.1}; double average=0; //to accumulate the sum for (int i = 0; i < x.length; i++) average=average+x[i]; //after this, average=7.0; average=average/x.length; //average=7.0/5=1.4; Question: Make it into a method.

12 Finding the average: method public static void main(String[ ] args){ double x[ ]={1.1, 1.2, 1.6, 2.0,1.1}; double average=MetAv(x);} //average=1.4 public static double MetAv(double[ ] a){ double av=0; for (int i = 0; i < a.length; i++) av=av+a[i]; av=av/a.length; return av; }

13 Constrained average: method public static void main(String[ ] args){ double x[ ]={1.1, 1.2, 0, 1.6, 2.0, 0}; //av. of no 0s double average=ConAv(x);} public static double ConAv(double[ ] a){ double av=0; int counter=0; for (int i = 0; i < a.length; i++) { if(a[i]!=0){ counter++; av=av+a[i];}} return av/counter; }

14 User defined type reading Follows such classes as: - Oblong and OblongTester, sections 6.3 and 7.2, Charatan and Kans, “Java in two semesters” - Counter and CounterTest, sections 6.3- 6.6, Pohl and McDowell, “Java by dissection” - Employee and TwoEmployee, p. 96-112, Ch.3, Farrell, “Java programming”

15 Array of user-defined type(1) The setting: We have a number of applicants for whom we have separate, but matching, lists of names and id’s organised as arrays. We would like to develop a new type for an Applicant to hold all individual data of the applicant, in this case just id and name, but it can have as many attributes as it takes. With this new type, we would like to organise a list of applicants as an array of this type

16 Array of user-defined type(2) To develop an array of applicants, we need –A named class, say Appl, with variables declared to hold all individual applicant data (A); –A constructor in this class that would take values from the arrays holding id and name information (B); –Representation of the id and name arrays (C); –Generation of an instance of array of new type, Appl (D); –Feeding the Id’s and names into the Appl array (E); We can show that this does work by printing out data of all the entries in the Appl array.

17 Array of user-defined type(3) class Appl{ public int ids; public String nms; public Appl(int iden, String nnn){ ids=iden; nms=nnn;} static int[] iden(){ int ii[]={12, 15, 22, 18, 11}; return ii;} static String[] namen(){ String jj[]={"Aa", "Bb", "Cc", "Dd", "Ee"}; return jj;}

18 Array of user-defined type(4) public static void main(String[] args){ int id[]=iden(); String name[]=namen(); Appl[] many=new Appl[id.length]; for(int i=0;i { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://images.slideplayer.com/13/4035029/slides/slide_18.jpg", "name": "18 Array of user-defined type(4) public static void main(String[] args){ int id[]=iden(); String name[]=namen(); Appl[] many=new Appl[id.length]; for(int i=0;i

19 Array of user-defined type(5) Question: Identify which parts of class Appl correspond to tasks A, B, C, D and E on slide 16

Similar presentations