Zach Paul Start. Step 1 Is there a Greatest Common Factor? YesNo Example.
Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their...
-
Upload
jayson-fowler -
Category
Documents
-
view
215 -
download
1
Transcript of Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their...
![Page 1: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/1.jpg)
Arrays… Java C Python
have fixed length yes* yes no
are initialized to default values
yes no ?
track their own length yes no yes
trying to access “out of bounds” stops program before worse things happen
* But an ArrayList – Java’s “class like arrays” - does not have a fixed length; it grows by itself as needed
yes no yes
Arrays: Comparison Shopping
![Page 2: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/2.jpg)
Syntax: ElementType[] name
Examples:◦ A variable: double[] averages;
◦ Parameters: public int max(int[] values) {…}
◦ A field: private Investment[] mutualFunds;
Array Types
![Page 3: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/3.jpg)
Syntax: new ElementType[length] Creates space to hold values Sets values to defaults
◦ 0 for number types◦ false for boolean type◦ null for object types
Examples:◦ double[] polls = new double[50];◦ int[] elecVotes = new int[totalVotesPossible];◦ Employee[] employees = new Employee[30];
Allocating Arrays
Don’t forget this step!
All 30 are currently null. This statement is typically followed by a
loop that initializes each element of the array to a new Employee. See next
slide.
![Page 4: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/4.jpg)
Reading:◦ double exp = polls[42] * elecVotes[42];
Writing:◦ elecVotes[37] = 11;
Index numbers run from 0 to array length – 1
Getting array length: elecVotes.length
Reading and Writing Array Elements Reads the element
with index 42.
Sets the value in slot 37.
Q3,4No parens, array length
is (like) a field
Dog[] dogs = new Dog[numberOfDogs];
for (int k = 0; k < dogs.length; ++k) { dogs[k] = new Dog(...);}
Initializes an array of Dogs to actually hold Dog objects
![Page 5: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/5.jpg)
Given:double scores[] = …double sum = 0.0;
Old school for (int i=0; i < scores.length; i++) {
sum += scores[i];}
New, enhanced for loopfor (double sc : scores) {
sum += sc;}
Enhanced For Loop and Arrays
No index variable Good! Abstracts away
the beginning/end/index in the collection
Gives a name (sc here) to each element Note: Can NOT use it to
MODIFY the current slot in the array
Say “in”
![Page 6: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/6.jpg)
ArrayLists to the rescue Example:
◦ ArrayList<State> sts = new ArrayList<State>();
sts.add(new State(“Indiana”, 11, .484, .497)); ArrayList is a generic class
◦ Type in <brackets> is called a type parameter
What if we don’t know how many elements there will be?
Element type
Variable type
Q5,6
Adds new element to end of list
Constructs new, empty list
![Page 7: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/7.jpg)
Type parameter can’t be a primitive type◦ Not: ArrayList<int> runs;◦ But: ArrayList<Integer> runs;
Use get method to read elements◦ Not: runs[12]◦ But: runs.get(12)
Use size() not length◦ Not: runs.length◦ But: runs.size()
Array List Gotchas
![Page 8: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/8.jpg)
Add to end:◦ victories.add(new WorldSeries(2008));
Overwrite existing element:◦ victories.set(0,new WorldSeries(1907));
Insert in the middle:◦ victories.add(1, new WorldSeries(1908));◦ Pushes elements at indexes 2 and higher up one
Can also remove:◦ victories.remove(victories.size() - 1)
Lots of Ways to Add to List
![Page 9: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/9.jpg)
Same notation as for arrays:
ArrayList<State> states = …
int total = 0;for (State state : states) {
total += state.getElectoralVotes();}
Enhanced For and ArrayLists
Q8
Say “in”
No index variable Good! Abstracts away the
beginning/end/index in the collection Gives a name (sc here) to each element
Note: Can NOT use it to MODIFY the current slot in the array
![Page 10: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/10.jpg)
Live CodingDo ElectionSimulator program
![Page 11: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/11.jpg)
Problem:◦ ArrayLists only hold objects◦ Primitive types aren’t objects
Solution:◦ Wrapper classes—instances
are used to “turn” primitive types into objects
◦ Primitive value is stored in a field inside the object
So, what’s the deal with primitive types?
Q7
Primitive Wrapper
byte Byte
boolean Boolean
char Character
double Double
float Float
int Integer
long Long
short Short
![Page 12: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/12.jpg)
Auto-boxing: automatically enclosing a primitive type in a wrapper object when needed
Example:◦ You write: Integer m = 6;◦ Java does: Integer m = new Integer(6);
◦ You write: Integer ans= m * 7;◦ Java does: int temp = m.intValue() * 7;
Integer ans = new Integer(temp);
Auto-boxing Makes Wrappers Easy
![Page 13: Arrays…JavaCPython have fixed lengthyes*yesno are initialized to default values yesno? track their own lengthyesnoyes trying to access “out of bounds”](https://reader036.fdocuments.in/reader036/viewer/2022082709/56649f4e5503460f94c6f530/html5/thumbnails/13.jpg)
Just have to remember to use wrapper class for list element type
Example:◦ ArrayList<Integer> runs =
new ArrayList<Integer>();runs.add(9); // 9 is auto-boxed
◦ int r = runs.get(0); // result is unboxed
Auto-boxing Lets Us Use ArrayLists with Primitive Types