1 / 91

Arrays

Arrays. CSC 171 FALL 2002 LECTURE 20. Arrays. Suppose we want to write a program that reads a set of test grades and prints them, marking the highest grade? 65.2 81.7 31.3 95.4 < - highest grade 76.1 58.6. Individual data items.

allie
Download Presentation

Arrays

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arrays CSC 171 FALL 2002 LECTURE 20

  2. Arrays • Suppose we want to write a program that reads a set of test grades and prints them, marking the highest grade? 65.2 81.7 31.3 95.4 < - highest grade 76.1 58.6

  3. Individual data items • If we knew that there were always 150 students in the class, we could store the data as individual variables • score1,score2,score3, . . , score150 • What would the data entry code look like? • What would the printing code look like? • How about finding the max?

  4. Arrays • An array is a collection of data items of the same type • Every element of the collection can be accessed separately.

  5. ___________________ is a fixed length sequence of values of the same type.

  6. _An array__________ is a fixed length sequence of values of the same type.

  7. Constructing Arrays double [] data = new double[10];

  8. double [] data = new double[10]; int x = data.length ; //instance field on arrays, x = = 10

  9. Setting Array values • To get values into an array you need to specify which slot you want to use. • Specification is done with the [ ] operator • The [ ] operator follows the name of the array • The [ ] operator encloses and integer-valued expression called the index or subscript

  10. Setting array values data[4] = 29.95; 0 1 2 3 4 5 6 7 8 9

  11. Using array values • Similar to setting int i = 4 ; System.out.println(“data[“+i+”] ==“+ data[i]); > data[4] ==29.95

  12. You access array elements with and integer position number, called the _______________, using the notation _______________.

  13. You access array elements with and integer position number, called the ___index_______, using the notation ____a[index]___________.

  14. Array data items • Suppose we want to write a program that reads a set of test grades and prints them, marking the highest grade? • What would the data entry code look like? • What would the printing code look like? • How about finding the max?

  15. Array issues • Does it work? double [] data = new double[10]; data[10] = 5.4;

  16. Array issues • Does it work? double [] data = new double[10]; data[10] = 5.4; When the program runs, an out-of-bounds subscript generates an exception and terminates the program – why?

  17. Position numbers of an array range from _________ to ____________.

  18. Position numbers of an array range from ___0_______ to ____a.length -1_________.

  19. Accessing a nonexistent position results is a ______________ error.

  20. Accessing a nonexistent position results is a _bounds_____ error.

  21. Use the ___________________field to find the number of elements in an array.

  22. Use the _____length______field to find the number of elements in an array.

  23. Array issues • Can we search for the top grade as follows double maxScore = data[0]; for (int i = 1;I<=data.length;i++) If (data[i] > maxScore) maxScore = data[i];

  24. Array issues • An array of length n has index values from 0 to (n-1) double maxScore = data[0]; for (int i = 1;I<data.length;i++) If (data[i] > maxScore) maxScore = data[i];

  25. Array issues • Does it work? public static void main(String[] args){ double[] data; If (data[0] > 4.0) System.out.println(“GT 4!”); }

  26. Array issues • Arrays must be allocated! public static void main(String[] args){ double[] data = new double[10]; If (data[0] > 4.0) System.out.println(“GT 4!”); }

  27. Array issues • Arrays can be initialized! public static void main(String[] args){ double[] data = {2,3,4,5,6}; If (data[0] > 4.0) System.out.println(“GT 4!”); } // note: new int[] {2,3,4,5,6} ; is also legal

  28. Copying Arrays Is this ok? double [] data = new double[10]; double[] testScores; testScores = data;

  29. Copying Arrays Is this ok? double [] data = new double[10]; double[] testScores; testScores = data; How many arrays are there?

  30. Copying Array REFERENCES double [] data = new double[10]; double[] testScores; testScores = data;

  31. Copying Arrays • So, what if we want to make two “real” copies – what does the code look like? • Write a method so that int[] x = {3,4,5,6,7,8,9,10}; int[] y = myCopy(x);

  32. Copying public static int[] myCopy(int[] x){ int[] r_arry = new int[x.length]; for (int i = 0 ; i< x.length;i++) r_arry[i] = x[i]; return r_arry; }

  33. System.arrayCopy //System.arraycopy(from,fromstart,to,toStart,count); System.arraycopy(data,0,prices,0,data.length);

  34. Clone

  35. An array variable stores a ________________________. Copying the variable yields a second ____________________ to _________________ array.

  36. An array variable stores a ______reference__________. Copying the variable yields a second ______reference______________ to ____the same_____________ array.

  37. Use the ________________ method to copy the elements of an array.

  38. Use the ____clone______ method to copy the elements of an array.

  39. Use the _____________________________ method to copy elements from one array to another.

  40. Use the _System.arraycopy____________________ method to copy elements from one array to another.

  41. If you run out of space in an array you need to _______________ a larger array and copy the elements into it.

  42. If you run out of space in an array you need to __allocate_____ a larger array and copy the elements into it.

  43. Getting a Bigger Array

  44. More Arrays Suppose we want to write a program that reads a set of test product names, prices, and quality scores prints them, marking the best value? (score/prices) Digital 500X, $3499.00, score 73 ZEOS Pentium-III/500, $2545.00, score 70 Micro Express MF, $2195.00, score 72 < - best value Polywell Poly 450IP, $2099.00, score 30

  45. Parallel Arrays • One solution, can you think of a better one?

  46. Arrays of Objects • Easier to deal with - arrays hold references

  47. Avoid ___________________________ arrays by changing them into arrays of objects.

  48. Avoid ____________parallel_______ arrays by changing them into arrays of objects.

  49. Multidimensional Arrays • Arrays of arrays • Arrays are objects • Arrays hold references to objects • Ergo, arrays can hold arrays

  50. Tables are 2D arrays // how easy to modify code ???? int[][] mtable = new int[5][5]; for(i=0;i<5;i++) • for(int j=0;j<5;j++) mtable[i][j] = (i+1)*(j+1); int size = 5; int[][] mtable = new int[size][size]; for(i=0;i<size;i++) for(int j=0;j<size;j++) mtable[i][j] = (i+1)*(j+1);

More Related