Download Array

Document related concepts
no text concepts found
Transcript
Arrays
Exam 1
1. Java source and executable files have
the following extensions?
a. .java and .class
b. .src and .class
c. .javadoc and .exe
d. .list and .exe
Exam 1
2. Which of the following is a Java
comment
a. ; This is my first program
b. # This is my first program
c. /* This is my first program */
d. ‘ This is my first program
e. none of the above
Exam 1
3. We use the following operator to create
a new object in Java
a. malloc
b. new
c. string
d. newObject
Exam 1
4. Commands to compile and execute a
java program are
a. run and java
b. execute and javac
c. javac and java
d. compile and run
Exam 1
5. Identifiers may start with
a. $
b. @
c. a number
d. &
Exam 1
6. It is necessary to declare an object
before you can use it
a. True
b. False
Exam 1
7. Which of the following is a valid
identifier?
a. Bank Account
b. bank account
c. bank$account
d. bank-account
Exam 1
8. A series of characters that appear in
double quote is a char data type
a. True
b. False
Exam 1
9. boolean isDone == false; is a valid
assignment statement in Java
a. True
b. False
Exam 1
10. Which of the following is a correct
variable declaration statement?
a. int x - float y;
b. int x: float y;
c. int x,y;
d. Long int x;
Exam 1
11. Boolean expressions are built by use of
_relational______operators and
_boolean_______operators
12. A data value that can not be changed is
called __constant____________
13. $Bad-Variable is __bad/invalid/not _ Java
identifier.
Exam 1
14. These two data types: __float__, and
___double___are used for real numbers
15. _An object____is an instance of a
class
Exam 1
16. double
loanPeriod;
if (loanPeriod < 0 || >1000 ); {
System.out.println(“Loan period is invalid”);
System.exit(1);
}
1.
loanPeriod is not initialized
2.
loanPeriod or a variable name is missing
3.
; is not needed.
Exam 1
17. double s;
s = 1.0;
switch (s) {
case 1.0: System.out.println(“ March madness”); break;
case 2.0: System.out.println(“ November rain”); break;
case 3.0: System.out.println(“White Christmas”); break;
default: System.out.println(“No Special name”); break;
}
1. Switch doesn’t support double data type
Exam 1
18. char aChar = ”NFL Championship”;
1. Char datatype can only contain 1
character
2. Char data type needs single quotes
instead of double ones
Exam 1
19. int i, j;
double x,y;
i=1;
j=2;
0=1.0
½
=
0,
3
x= Math.pow(3, (i/j));
y = x % 2;
if (y ==0)
y = 1.0 % 2 = 1.0
System.out.println(x +" is an even number ");
else
System.out.println(x +" is an odd number");
1.0 is an odd number
Exam 1
20. int count=1, sum=0;
while (count < 9) {
if (count % 2 != 0) {
sum += count;
}
count++;
}
System.out.println(" Sum ="+ sum);
Exam 1
count =1, sum =0, 1 %2 = 1 (!= 0), sum = 0+1=1
count =2, sum=1, 2 % 2 = 0
count =3, sum=1, 3 % 2 = 1 (!=0), sum = 1+3 = 4
count =4, sum=4, 4 % 2 = 0
count =5, sum=4, 5 % 2 = 1 (!=0), sum = 4+5 = 9
count =6, sum=9, 6 % 2 = 0
count =7, sum=7, 7 % 2 = 1 (!=0), sum = 9+7 = 16
count =8, sum=16, 8 % 2 = 0
count =9, exit
Sum = 16
Exam 1
21. int sum =0;
for (int i=1; i<=2; i++) {
for (int j=1; j<=3; j++) {
sum = sum + (i+j);
}
}
System.out.println(" Sum ="+ sum);
Exam 1
sum =0
i=1;
j=1; sum=0+(1+1)
j=2; sum =(1+1)+(1+2)
j=3; sum = (1+1)+(1+2)+(1+3) = 2+3+4=9
i=2
j=1; sum=9+(2+1)
j=2; sum=9+(2+1)+(2+2)
j=3; sum=9+(2+1)+(2+2)+(2+3)=
9+(3+4+5)=9+12=21
Sum =21
Lab 4
Project Discussion (section 01+02)
Loan class:
public class Loan{
// data members
a.
// constructor(s)
// Methods()
}
Project Discussion (section 01)
Loan class:
public class Loan{
// data members
private int loanPeriod;
private double loanAmount;
private double monthlyInterestRate;
private double monthlyAmortization; // optional
a.
}
Project Discussion (section 01)
Loan class:
public class Loan{
//Constructor(s)
public Loan(double loanAmt, double interest, int
months ) {
// this is a stub
loanAmount = loanAmt;
// should initialize monthlyInterestRate and
//loanPeriod the same way
}
a.
}
Project Discussion (section 01)
Loan class:
public class Loan{
// Methods
public void setLoanAmount(double loanAmt) {
// this is stub
}
public double getLoanAmount() {
return loanAmount;
}
a.
}
Project Discussion (section 01)
Loan class:
public class Loan{
// Methods
public void setMonthlyInterestRate(double interest) {
// this is stub
}
a.
public double getMonthlyInterestRate() {
return monthlyInterestRate;
}
}
Project Discussion (section 01)
Loan class:
public class Loan{
// Methods
public void set(int months) {
// this is stub
}
a.
public double getLoanPeriod() {
return loanPeriod;
}
}
Project Discussion (section 01)
Loan class:
public class Loan{
// Methods
public double computeAmortization() {
// this is a stub
// The formula should be put here
// Make sure to change the names to the data
// member name
// Don’t forget
return ……;
}
a.
}
Project 2 (Section 01)
public class Amortization{
// data member;
private Loan loan;
// constructor
public Amortization () {
}
}
Project 2 (Section 01)
public class Amortization{
// Methods:
public void start() {
// This is a stub
}
public void describeProgram() {
// This is a stub
}
}
Project 2 (Section 01)
public class Amortization{
// Methods:
public void getInput () {
// This is a stub
// You should use Loan class here
}
public void displayOutput() {
// This is a stub
// You should use Loan class here
}
}
Lesson plan

Arrays
Section 02
public class Loan {
// data members
private double monthlyInterestRate;
private double loanAmount;
private int numberOfMonths;
}
Section 02
public class Loan {
// Constructor(s)
public Loan(double borrowedAmt, double interest, int
months) {
// this is a stub
loanAmount= borrowedAmt;
// similarly, you can initialize monthlyInterestRate
// and numberOfMonths accordingly
}
}
Project 2 (Section 02)
public class Amortization{
// data member
private Loan loan;
}
Project 2 (Section 02)
public class Amortization{
// constructor
public Amortization() {
// this is a stub
loan = new Loan(1000,0.1,12);
}
}
Project 2 (Section 02)
public class Amortization{
// methods
public void start() {
// this is a stub
}
private/public void describeProgram() {
// this is a stub
// Cut and paste System.out.print describe what
// this program is doing from project 1 to here
}
}
Project 2 (Section 02)
Import javax.swing.*;
public class Amortization{
// methods
public/private void getInput() {
// this is a stub
// Cut and paste the while loop to get inputs users in part e
(project 1) here
// Use Loan Class
loan.setBorrowedMoney( …..);
}
}
Project 2 (Section 02)
Import javax.swing.*;
public class Amortization{
// methods
public/private void printOutput() {
// This is a stub
//
print out loan.
// getAmortizationPayment()
}
}
Section 02
public class Loan {
//Methods
public void setBorrowedMoney(double principle) {
// this is a stub
}
public double getBorrowedMoney() {
return loanAmount;
}
}
Section 02
public class Loan {
//Methods
public void setMonthlyInterestRate(double interest) {
// this is a stub
}
public double getMonthlyInterestRate() {
return monthlyInterestRate;
}
}
Section 02
public class Loan {
//Methods
public void setNumberOfMonths(int months) {
// this is a stub
}
public double getNumberOfMonths() {
return months;
}
}
Section 02
public class Loan {
//Methods
public double getAmortizationPayment() {
// this is a stub
// You should put the formula in project 1 here
// Don’t forget to change the variable names
// and don’t forget to return the value;
return ……;
}
}
Arrays

We often need to group together related
items of data.
Cards in a pack.
 Ships in a port.


Java provides two distinct facilities:
Traditional array.
 Flexible-size collection classes
(java.util).

Problems That Arrays Solve
……
minValue = firstNumber;
if (secondNumber < minValue)
minValue = secondNumber;
if (thirdNumber < minValue)
minValue = thirdNumber;
if (fourthNumber < minValue)
minValue = fourthNumber;
if (fifthNumber < minValue)
minValue = fifNumber;
What is this code doing?
……
Finding minimum value from a set of 5 values
Arrays for Numerical data type
(primitive data types)
int[] number = new int [5];
int minValue;
String inputStr;
Array
for (int i=0; i<5; i++) {
declaration &
inputStr = JOptionPane.showInputDialog(null,"Please
allocationenter the
value for element "+i);
memory
number[i] = Integer.parseInt(inputStr);
}
minValue = number[0];
for (int i=1; i<5; i++) {
if (minValue > number[i])
minValue = number[i];
}
System.out.println(" minValue ="+ minValue);
Arrays for Numerical data type
(primitive data types)
int[] number = new int [5];
int minValue;
Getting values
for all elements
in the array
String inputStr;
for (int i=0; i<5; i++) {
inputStr = JOptionPane.showInputDialog(null,"Please enter the
value for element "+i);
number[i] = Integer.parseInt(inputStr);
}
minValue = number[0];
for (int i=1; i<5; i++) {
if (minValue > number[i])
minValue = number[i];
}
System.out.println(" minValue ="+ minValue);
Arrays for Numerical data type
(primitive data types)
int[] number = new int [5];
int minValue;
String inputStr;
for (int i=0; i<5; i++) {
inputStr = JOptionPane.showInputDialog(null,"Please enter the
value for element "+i);
number[i] = Integer.parseInt(inputStr);
Access each
}
element of an
array
minValue = number[0];
for (int i=1; i<5; i++) {
if (minValue > number[i])
minValue = number[i];
}
System.out.println(" minValue ="+ minValue);
Arrays
Array is a collection of data values of the
same data type.
 Example:
int[ ] number; // This is an array of
integers
double[] gpa; // This an array of double

Array Declaration
Format:
<data type>[] <array_name>;
OR
<data type> <array_name>[];
data type: double, int, float, string
Example:
double[] gpa;
Or
double gpa[];
Arrays

The amount of memory allocated to store an array
depends on the size and type of values in the array



Size: number of elements in the array
Type of values: data type of each element in the array
An individual value in an array is called array element
Example:
int[ ] number = new int[5];
data type: integer (4 bytes)
size: 5
memory: 20 bytes
Array is a reference data type. Array is NOT an object
Arrays
Example:
int[ ] number = new int[5];
number
number[0]
6
0
1
2
3
4
Arrays

Elements of an array are indexed from zero to
size -1
 Size: the number of elements in an array
 length: a public constant represents the size of
an array.
Example:
sum =0;
for (int i=0; i<number.length; i++)
sum += number[i];
Fixed –size array declaration
Size of an array is pre-determined.
Example:
int[] number= new int[5];
Problems:
• What if we have more than predetermined size of an array?
• Underutilization of space.
Variable-size array declaration


In Java, we can declare an array of different size every
time we run a program
Example:
int size;
int[] number;
inputStr = JOptionPane.showInputDialog(null,"Please
enter the number of elements ");
size = Integer.parseInt(inputStr);
number = new int[size];
Practice (in class and/or at home)
Modify the class ComputeMin (week 4) to
print out the minimum of an array with
n integers.
Arrays for Objects
// An array for the names of the distinct
private Loan[] loanArray = new Loan[5];
• Note: No Loan objects are created. Only a
container for Loan.
• Each location is initialized to null.
loanArray
NULL
Arrays of Objects
private Loan[] loanArray = new Loan[5];
for (i=0; i<5; i++) {
loanArray[i] = new Loan();
}
loanArray
Indexing an Array
int[] number = new int [5];
number[0] =2;
number[1]=3;
number[2]=4;
number[3]= 6;
number[4]=-1;
Initializing Arrays
...
// Differentially number the assignments.
private int[] number = {1, 2, 1, 5, 1,};
private final int totalNumber =
number.length;
• No new required.
• Terminating semicolon.
• Optional final comma.
Further Initializer Examples
String[] suitNames = {
"Spades", "Hearts", "Diamonds", "Clubs"
};
Point[]
new
new
new
new
};
vertices = {
Point(0,0),
Point(0,1),
Point(1,1),
Point(1,0),
YearlyRainfall y2k = new YearlyRainfall(
new int[]{10,10,8,8,6,4,4,0,4,4,7,10,});
Iterating over an Array in
Reverse
int size = 5;
minValue = number[size-1];
for (int i=size-2; i>=0; i--) {
if (minValue > number[i])
minValue = number[i];
}
Copying Arrays
int size=5;
int number[] = new int[size];
// Assuming that we get values for number array here
// Declare another array called number1
int number1[] = new int[size];
// Copy the values of array number to array number1
System.arraycopy(number,0,number1,0,size);
Passing Array to Methods
When an array is passed to a method,
only its reference is passed. A copy of
the array is not created in the method.
That means:
we pass the identifier for that array which
in fact is a reference to a start address of
the array.

Passing Array to Methods
Assuming changeArrayValue is one method of a class
named ArrayClass
public void changeArrayValue(int[] arrayChanged)
{
for (int i=0; i< arrayChanged.length-1; i++)
arrayChanged[i] += 1;
}
We call this method as:
Passing Array to Methods
ArrayClass anObj = new ArrayClass();
int number[5] = new int[5];
for(int i=0; i<number.length; i++)
number[0] = i;
anObj.changeArrayValue(number);
Passing Array to Methods
for(int i=0; i<number.length; i++)
number[0] = i;
number
0
1
2
3
4
anObj.changeArrayValue(number);
number
1
2
3
4
5
Searching an Unsorted Array
We often need to search an array for a
particular item of data.
 The data is often unsorted.
 The item might or might not be present.

Care must be taken not to search beyond
the end of the array.
 We need to decide how to return a found
item.

Search with Multiple Returns
public int indexOf(int[] numbers,int value){
final int notPresent = -1;
for(int index = 0; index < numbers.length;
index++){
if(numbers[index] == value){
return index;
}
}
// We did not find it.
return notPresent;
}
The Arrays Class

Defined in the java.util package.

Contains static methods for manipulating
arrays:
binarySearch: search for a value.
 equals: compare the contents of two
arrays.
 fill: fill an array with a particular value.
 sort: sort the contents of an array.

Multi-Dimensional Arrays

Arrays of multiple dimensions are
possible.
2D grid, for a board game such as chess.
 3D cube structure, etc.

Multi-dimensional arrays are regarded as
being arrays of arrays.
 Non-rectangular structures are possible.

2D Array Construction
final int numRows = 10, numCols = 5;
double[][] matrix = new double[numRows][numCols];
char[][] hiddenWord = {
{ 'd', 'g', 'i', 'b' },
{ 'e', 'i', 'u', 'm' },
{ 't', 'a', 's', 'a' },
};
Review
Arrays make it possible to group related
items in a single object.
 An array's length is fixed on construction.
 Arrays may have multiple dimensions.
