Sp1 lecture 5 9 2 11
This presentation is the property of its rightful owner.
Sponsored Links
1 / 27

SP1 Lecture 5: 9/2/11: PowerPoint PPT Presentation


  • 71 Views
  • Uploaded on
  • Presentation posted in: General

SP1 Lecture 5: 9/2/11:. Static and instance variables Class Math Random Loan calculator Local variables Array (if time permits). Static and instance variables. Static variable :belongs to its class, and it is shared by all class instances, with the same value

Download Presentation

SP1 Lecture 5: 9/2/11:

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Sp1 lecture 5 9 2 11

SP1 Lecture 5: 9/2/11:

  • Static and instance variables

  • Class Math

    • Random

    • Loan calculator

  • Local variables

  • Array (if time permits)


Static and instance variables

Static and instance variables

Static variable:belongs to its class, and it is shared by all class instances, with the same value

Instance variable:a class variable without the “static” modifier, is shared by all class instances, but its values can differ in different instances

Local variable: is created within a method or instance in a { } block. Its scope is limited within the block.


Example 1

Example (1)

public class TesNum {

int instVar = 1;

static int statVar = 10;

TesNum() {

System.out.println("test: " + instVar + " and " + statVar);

instVar = 7; statVar = 5;

} \\ constructor


Example 2

Example(2)

public static void main(String[] args) {

TesNum alpha1 = new TesNum();

alpha1.instVar = 3;

alpha1.statVar = 6; //syn. to: TesNum.statVar = 6;

TesNum alpha2 = new TesNum();

System.out.println("inst: " + alpha1.instVar + " and " + alpha2.instVar);

System.out.println("stat: " + alpha1.statVar + " and " + alpha2.statVar);

//System.out.print("mix: " + instVar + " and " + statVar); wrong

}//end of main

}//end of class


What s going on in tesnum

What’s going on in TesNum

instVar statVar

1. With the class:

1 (in class) 10

2. At the constructor in class (virtual): 75

3. After alpha1:Constructor prints:1 and 10

3 (within alpha1)6

4. After alpha2:Constructorprints:1 and6

7 (within alpha2)5

5. Method main prints:3 and 7

5 and 5


A method added

A method added:

public int SS(int a){

int b=instVar;

int sum=0;

if (a>b){ //swap a and b

int c=b; b=a; a=c;}

for(int i=a;i<=b;i++)

sum=sum+i;

return sum;

}// computes the sum of integers from a to b

int b1=alpha1.SS(statVar);

int b2=alpha2.SS(statVar);

System.out.println("sum : " + b1 + " and " + b2);


Sums to be printed

Sums to be printed

From alpha1: a=5, b=3

The sum: 3+4+5=12, that is, b1=12

From alpha2: a=5, b=7

The sum: 5+6+7=18, that is, b2=18

The print:

sum: 12 and 18


References to object variables and methods

References to object variables and methods

Examples from TesNum

alpha1.statVar

alpha2.instVar

TesNum.statVar

from TesNMod

alpha1.SS(statVar)


Class math no need to import

Class Math (no need to import)

Math.pi  =3.14…,the ratio of the

circumference to its diameter

Math.abs(a) a if a >= 0, or -a if a < 0

Math.log(a) the natural logarithm

(base e) of number a

Math.sqrt(a) square root of number a

Math.pow(a,b)ab ; if b is an integer then

ab =aa…a (b times)


Loan calculator i

Loan calculator I

  • Deposit:

    • You put £1000 with annual interest rate 5%

    • Q: How much money it will be in 10 years?

    • A: Run Java loop:

      • int A=1000;

      • for (int k=1;k<=10;k++)

      • A=A*1.05;

      • System.out.println(“In 10 years the value is ”+A);

  • Loan

    • You take £1000 with annual interest rate 5% for 10 years.

    • Q: How much money to pay monthly?


Loan calculator ii

Loan calculator II

  • Loan

    • You take £1000 with annual interest rate 5% for 10 years.

    • Q: How much money to pay monthly?

    • No simple arithmetic answer; powers needed

  • Java computation

    • double a=1000.0; double air=0.05;

    • int period=10;

    • double mopay, totpay;

    • double mir=air/12; int mp=period*12;//month unit

    • mopay=(a*mir)/(1 – Math.pow(1/(1+mir),mp));

    • totpay=mopay*mp;


Loan calculator iii

Loan calculator III

  • public class Loan{

  • public static void main(String[] args) {

  • Loan lo = new Loan();

  • double mopay=lo.pay(10000, 0.05,10);

  • double topay=mopay*12*10;

  • System.out.println("Monthly payment is "+mopay);

  • System.out.println("Total payment is "+topay);

  • }

  • double pay(double a, double air,int period){

  • double mir=air/12; int mp=period*12;//month unit

  • double mop=(a*mir)/(1 - Math.pow(1/(1+mir),mp));

  • return mop;

  • }

  • }


Loan calculator iv homework

Loan calculator IV (Homework)

Modify class loan in such a way that its constructor takes from the user some or all of the details needed to do the computation:

  • Loan value

  • Repayment period (in years)

  • Rate


Math random

Math.random()

pseudorandom number: double within interval [0.0, 1.0) (zero included, unity not)

How to use it to generate a random integer between 1 and 6 (inclusive), to imitate casting a dice?


Casting a dice

Casting a dice

double aa=Math.random();

//aa, a real number between 0 and 1

int an= 6*aa;//a real number between 0 and 6

int rand=(int) an;

// whole number between 0 and 5

int randw=rand+1;

// whole number between 1 and 6

The same in one line:

int randw= (int) (6*Math.random()+1);


Casting a dice question

Casting a dice question

How to generate a random integer between 10 and 20 inclusive?

Answer:

int rdt= (int) (11*Math.random()+10);

Another possibility: using class Random

with

import java.util.Random


Local variables definition

Local variables: Definition

Local variable:

is created within a method or instance in a { } (curly brace) block.

Its scope is limited within the block.

Therefore, same name can be used in different blocks for different variables.


Local variables 1

Local variables(1)

public class Prog03{ private static int i=3;

public static void method1(){

int i=2; i+=6;

System.out.println(i); }

public static int method2(int a){

a=a+3; int i=2*a-6;

return i; }

public static void method3(int i){

System.out.println(i+1);

i=i+2;

System.out.println(method2(i)); }


Local variables 2

Local variables(2)

public static void main(String[] args){

System.out.println(i);

System.out.println(i+1);

method1();

i = method2(i);

System.out.println(i);

method3(i+1);

}

} //end of class


Actual printout

Actual printout

Working from main method:

PrintWhy

3 First line executed, static i=3

4Second line executed, static i=3

8Third line executed, method1 at which i=8

6Fifth line executed with i=method2(3), that is, i=6

8Sixth line executed, method3(9),two printings

18


Array 1

Array (1)

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


Array 2

Array (2)

Not an array: abc[ ]={8, Ringo, +} -WHY?

(different types)

[ ] - on the array name's right is used to indicate arrays

2. Declaring arrays

Both,

int ages[ ];

and

int[ ] ages;

 is OK


Array 3

Array (3)

Initialisation of an array: either

ages = new int[8]; // array with 8 zeros

or

ages[ ] = {23, 32, 19, 30, 25, 25, 23, 30};

//specify what is needed

Simultaneously declaring & initialising (with zeros)

int ages[] = new int[8];


Array 4

Array (4)

ages[ ] = {23, 32, 19, 30, 25, 25, 23, 30};

Accessing array elements

ages [1]   is   32

int i=4;

int j = ages [i];  // assigning j with   25


Work with arrays 1

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/height2

(in the US, those with bmi between 20 and 25 are considered of normal weight)


Work with arrays 2

Work with arrays(2)

Loop for is natural with arrays: the index used as the counter

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:

bmi[ ]=new double[height.length];

for (int I = 0; I < height.length; I + +)

bmi[I]=weight[I] / (height[I]height[I]);


Work with arrays 3

Work with arrays(3)

The same result with a method for the bmi:

double[ ] bmiindex(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 bmiindex is just a frame box; to make it work, one needs to put within a class this:

double[ ] bmi=bmiindex(weight, height);


  • Login