loops isys 350. three types of loops while loop do while loop for loop

42
Loops ISYS 350

Post on 21-Dec-2015

251 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Loops

ISYS 350

Page 2: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Three Types of Loops

• while loop• do while loop• for loop

Page 3: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 3

The syntax of the while loop

while (booleanExpression) { statements }

Page 4: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

An Infinite Loopwhile (true){ System.out.println("enter loan:"); double loan=sc.nextDouble(); System.out.println("enter rate in %:"); double rate=sc.nextDouble(); System.out.println("enter term in year:"); double term=sc.nextDouble(); double monPayment=(loan*rate/100/12)/(1-(Math.pow(1+rate/100/12,-12*term)));

System.out.println("Monthly payment is: =" + monPayment);

}

Page 5: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Using a FlagString flag="Y"; while (flag.equalsIgnoreCase("Y")){ System.out.println("enter loan:"); double loan=sc.nextDouble(); System.out.println("enter rate in %:"); double rate=sc.nextDouble(); System.out.println("enter term in year:"); double term=sc.nextDouble(); double monPayment=(loan*rate/100/12)/(1-(Math.pow(1+rate/100/12,-12*term))); System.out.println("Monthly payment is: =" + monPayment); System.out.println("Do you want to continue? (Y/N):"); flag=sc.next(); } System.out.println("Thank you for using payment calculator!");

Note: Flag may be declared as a boolean.

Page 6: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Flag Declared as boolean

boolean repeatFlag=true;//while (repeatFlag) while (repeatFlag==true){ System.out.println("enter loan:"); double loan=sc.nextDouble(); System.out.println("enter rate in %:"); double rate=sc.nextDouble(); System.out.println("enter term in year:"); double term=sc.nextDouble(); double monPayment=(loan*rate/100/12)/(1-(Math.pow(1+rate/100/12,-12*term))); System.out.println("Monthly payment is: =" + monPayment); System.out.println("Do you want to continue? (Y/N):"); String YON=sc.next(); if (YON.equalsIgnoreCase("N")) repeatFlag=false; }

Page 7: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Accumulator

Find the sum of all numbers between 1 and N.

Scanner sc=new Scanner(System.in); System.out.println("enter an integer:"); int N = sc.nextInt(); int Sum=0; while (N>0) { Sum=Sum+N; --N; } System.out.println("The sum of all numbers is: " + Sum);

Page 8: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Exit Loop with the break statementScanner sc=new Scanner(System.in);while (true){ System.out.println("enter loan:"); double loan=sc.nextDouble(); System.out.println("enter rate in %:"); double rate=sc.nextDouble(); System.out.println("enter term in year:"); double term=sc.nextDouble(); double monPayment=(loan*rate/100/12)/(1-(Math.pow(1+rate/100/12,-12*term))); System.out.println("Monthly payment is: =" + monPayment); System.out.println("Do you want to continue? (Y/N):"); String YON=sc.next(); if (YON.equalsIgnoreCase("N")) break; } System.out.println("Thank you for using payment calculator!");

Page 9: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

While Loop ExampleN Factorial, N!

Scanner sc=new Scanner(System.in); System.out.println("enter an integer:"); int N = sc.nextInt(); int factorial=1; while (N>0){ factorial=factorial*N; N=N-1; } System.out.println("factorial= " + factorial);

Page 10: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Compute N! or Stop when the product greater than 100(Determine if it is a normal exit or earlier exit)

Scanner sc=new Scanner(System.in); System.out.println("enter an integer:"); int N = sc.nextInt(); boolean exitEarlier = false; int factorial=1; int Count = 1; while (Count<=N){ factorial=factorial*Count; if (factorial >= 100){ exitEarlier = true; break; } Count++; } if (exitEarlier==false) System.out.println("factorial= " + factorial); else System.out.println("Reach 100 when N = " + Count);

Page 11: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Use continue statement to jump to the beginning of a loop

Find the sum of all even numbers between 1 and N but ignore numbers ending with 6 .Scanner sc=new Scanner(System.in); System.out.println("enter an integer:"); int N = sc.nextInt(); int Sum=0; while (N>0) { if (N % 10 == 6){ --N; continue; } if (N % 2==0) Sum=Sum+N; --N; } System.out.println("The sum of all even numbers ignoreing 6 is: " + Sum);

Page 12: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 12

The syntax of the do-while loop do { statements } while (booleanExpression); Note: Statements will execute at least once.

Page 13: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Accumulator

Find the sum of all numbers between 1 and N using do loop.

Scanner sc=new Scanner(System.in); System.out.println("enter an integer:"); int N = sc.nextInt(); int Sum=0; do { Sum=Sum+N; N=N-1; //Sum+=N; //--N; } while (N>0); System.out.println("The sum of all numbers is: " + Sum);

Page 14: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Do while loop example

String flag; do { System.out.println("enter loan:"); double loan=sc.nextDouble(); System.out.println("enter rate in %:"); double rate=sc.nextDouble(); System.out.println("enter term in year:"); double term=sc.nextDouble(); double monPayment=(loan*rate/100/12)/(1-(Math.pow(1+rate/100/12,-12*term))); System.out.println("Monthly payment is: =" + monPayment); System.out.println("Do you want to continue? (Y/N):"); flag=sc.next(); } while (flag.equalsIgnoreCase("Y"));

Page 15: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 15

The syntax of the for loop for(initializationExpression; booleanExpression; incrementExpression) { statements }

Page 16: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Sum of 1 to N

Scanner sc=new Scanner(System.in); System.out.println("enter an integer:"); int N = sc.nextInt(); int Sum=0; int i=0; for (i=0; i<=N;++i){ Sum=Sum + i; } System.out.println("The sum is: " + Sum);

Page 17: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Increment smaller than 1

Scanner sc=new Scanner(System.in); System.out.println("enter an integer:"); int N = sc.nextInt(); double Sum=0; double i; for (i=0; i<=N; i += 0.5){ Sum=Sum + i; System.out.println("loop i is " + i); } System.out.println("The sum is: " + Sum);

Note: What is wrong if I and Sum are declared as integer? Infinite loop

Page 18: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

For loop with break: Compute N! or Stop when the product greater than 100

(Determine if it is a normal exit or earlier exit)Scanner sc=new Scanner(System.in); System.out.println("enter an integer:"); int N = sc.nextInt(); boolean exitEarlier = false; int factorial=1; int Count = 1; for (Count=1;Count<=N;++Count){ factorial=factorial*Count; if (factorial >= 100){ exitEarlier = true; break; } } if (exitEarlier==false) System.out.println("factorial= " + factorial); else System.out.println("Reach 100 when N = " + Count);

Page 19: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

For loop with the continue statementFind the sum of all even numbers between 1 and N but ignore numbers ending with 6 .

Scanner sc=new Scanner(System.in); System.out.println("enter an integer:"); int N = sc.nextInt(); int Sum=0, Count; for (Count=N;Count>0;--Count) { if (Count % 10 == 6) continue; if (Count % 2==0) Sum=Sum+Count; } System.out.println("The sum of all even numbers ignoreing 6 is: " + Sum);

Page 20: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 20

A for loop that adds the numbers 8, 6, 4, and 2 int sum = 0; for (int j = 8; j > 0; j -= 2) { sum += j; }

Page 21: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 21

How to code for loops A for loop is useful when you need to increment or decrement a

counter that determines how many times the loop is executed.

Within the parentheses of a for loop, you code:

an initialization expression that gives the starting value for the counter

a Boolean expression that determines when the loop ends

an increment expression that increments or decrements the counter

The loop ends when the Boolean expression is false.

You can declare the counter variable before the for loop. Then, this variable will be in scope after the loop finishes executing.

Page 22: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Formatting Numeric Print OutputSystem.out.format

• System.out.format(String format, variables separated by commas);

• Java Tutorials/Numbers and Strings/ Numbers/Formatting Numeric Print Output– int i = 461012; – System.out.format("The value of i is: %d%n", i);

The output is: The value of i is: 461012

Page 23: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Printing more than one variables

Control decimal places: $%.2fPrint with $ and start a new line: $%.2f%n

System.out.format(" %d $%.2f%n", Year,FV);

Page 24: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

DecimalFormat Class

• Use DecimalFormat class to define a format:– Format: “###,###.###”

• 123,456.789

– Format: “###.##”• 123456.79

– Format: “000000.000”• 000123.780

– Format: “$###,###.###”• $12,345.67

Page 25: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

DecimalFormat Example

DecimalFormat myFormatter = new DecimalFormat("00");Int i=2, j=3, product;product=i*j; String output = myFormatter.format(product);

Page 26: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Future Value=Present Value*(1+Rate)Year

Scanner sc=new Scanner(System.in); System.out.println("enter present value:"); double PV = sc.nextDouble(); System.out.println("enter rate:"); double Rate = sc.nextDouble(); System.out.println("enter ending year:"); double endYear = sc.nextDouble(); double FV; int Year; for (Year=5;Year<=endYear;Year+=5) { FV=PV*Math.pow(1+Rate,Year); //System.out.format("year = %d, FV = %f%n", Year,FV); System.out.format(" %d $%.3f%n", Year,FV); }

Given PV and Rate, compute the FV starting from year 5 until specified year with a step of 5

Page 27: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Nested Loop

String line=""; int i,j,product; for (i=1;i<=3;++i){ for (j=1;j<=4;++j){ product=i*j; line=line+ "( " + i + ", " + j +") "; } System.out.println(line); line=""; }

( 1, 1) ( 1, 2) ( 1, 3) ( 1, 4) ( 2, 1) ( 2, 2) ( 2, 3) ( 2, 4) ( 3, 1) ( 3, 2) ( 3, 3) ( 3, 4)

Note: Use a while loop to produce the same output.

Page 28: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Nested LoopMultiplication Table

1 2 3 4 5 6 7 8 91 01 02 03 04 05 06 07 08 09 2 02 04 06 08 10 12 14 16 18 3 03 06 09 12 15 18 21 24 27 4 04 08 12 16 20 24 28 32 36 5 05 10 15 20 25 30 35 40 45 6 06 12 18 24 30 36 42 48 54 7 07 14 21 28 35 42 49 56 63 8 08 16 24 32 40 48 56 64 72 9 09 18 27 36 45 54 63 72 81

Page 29: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

First Try

String line=""; int i,j,product; for (i=1;i<=9;++i){ for (j=1;j<=9;++j){ product=i*j; line=line+product + " "; } System.out.println(line); line=""; }

Page 30: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Second Try

DecimalFormat myFormatter = new DecimalFormat("00"); String line=""; int i,j, product; System.out.println(" 1 2 3 4 5 6 7 8 9"); for (i=1;i<=9;++i){ line=line+ i + " "; for (j=1;j<=9;++j){ product=i*j; String output = myFormatter.format(product); line=line+output + " "; } System.out.println(line); line=""; }

Page 31: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Future Value=Present Value*(1+Rate)Year

Given PV, compute the FV starting from year 5 until specified year with a step of 5 and rate from 3% to specified rate with a step of 0.5%

Rate/Year 5 10 15 20 3.00% $1,159.27 $1,343.92 $1,557.97 $1,806.11 3.50% $1,187.69 $1,410.60 $1,675.35 $1,989.79 4.00% $1,216.65 $1,480.24 $1,800.94 $2,191.12 4.50% $1,246.18 $1,552.97 $1,935.28 $2,411.71 5.00% $1,276.28 $1,628.89 $2,078.93 $2,653.30

Page 32: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Code example Scanner sc=new Scanner(System.in); System.out.println("enter present value:"); double PV = sc.nextDouble(); System.out.println("enter ending rate:"); double endRate = sc.nextDouble(); System.out.println("enter ending year:"); double endYear = sc.nextDouble(); double FV, Rate; int Year; String line=""; DecimalFormat dollarFormatter = new DecimalFormat("$###,###.00"); DecimalFormat percentFormatter = new DecimalFormat("###.00%"); line="Rate/Year "; for (Year=5;Year<=endYear;Year+=5) line=line + Year + " "; System.out.println(line); line=""; for (Rate=0.03;Rate<=endRate;Rate+=0.005){ line=line+ percentFormatter.format(Rate)+ " "; for (Year=5;Year<=endYear;Year+=5) { FV=PV*Math.pow(1+Rate,Year); line=line+ dollarFormatter.format(FV) + " "; } System.out.println(line); line="";}

Page 33: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Exercise

Monthly payment table

term 30Loan

rate 100,000 150,000 200,000 250,0005% $536.82 $805.23 $1,073.64 $1,342.05 5.25% $552.20 $828.31 $1,104.41 $1,380.51 5.50% $567.79 $851.68 $1,135.58 $1,419.47 5.75% $583.57 $875.36 $1,167.15 $1,458.93 6% $599.55 $899.33 $1,199.10 $1,498.88

Create a monthly payment table for loans with term specified by user and rate range from 5% to any specified rate with an increment of .25% and loan from 100,000 to any specified loan with an increment of 50000.

Page 34: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 34

A labeled break statement that exits the outer loop

outerLoop: for (int i = 1; i < 4; i++) { System.out.println("Outer " + i); while (true) { int number = (int) (Math.random() * 10); System.out.println(" Inner " + number); if (number > 7) break outerLoop; } }

How to code labeled break statements To jump to the end of an outer loop from an inner loop, you can

label the outer loop and use the labeled break statement.

Page 35: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 35

The syntax of the continue statement continue;

A continue statement that jumps to the beginning of a loop

for (int j = 1; j < 10; j++) { int number = (int) (Math.random() * 10); System.out.println(number); if (number <= 7) continue; System.out.println("This number is greater than 7"); }

How to code continue statements To skip the rest of the statements in the current loop and jump to

the top of the current loop, you can use the continue statement.

Page 36: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 36

The syntax of the labeled continue statement continue labelName;

The structure of the labeled continue statement labelName: loop declaration { statements another loop declaration { statements if (conditionalExpression) { statements continue labelName; } } }

Page 37: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 37

A labeled continue statement that jumps to the beginning of the outer loop

outerLoop: for(int i = 1; i < 20; i++) { for(int j = 2; j < i-1; j++) { int remainder = i%j; if (remainder == 0) continue outerLoop; } System.out.println(i); }

Page 38: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 38

The basic syntax for coding a static method {public|private} static returnType methodName([parameterList]) { statements }

Page 39: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 39

A static method with no parameters or return type private static void printWelcomeMessage() { System.out.println("Hello New User"); // This could be a lengthy message }

A static method with three parameters that returns a double value

public static double MPayment(double loan,double rate,double term){ double monPayment=(loan*rate/100/12)/(1-(Math.pow(1+rate/100/12,-12*term))); return monPayment; }

Page 40: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 40

The syntax for calling a static method that’s in the same class

methodName([argumentList])

A call statement with no arguments and no return value

printWelcomeMessage();

A call statement that passes three arguments and return a value

double monPayment=MPayment(loan,rate,term);

Page 41: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Monthly Payment Methodpublic static void main(String[] args) {Scanner sc=new Scanner(System.in); String flag="Y"; while (flag.equalsIgnoreCase("Y")){ System.out.println("enter loan:"); double loan=sc.nextDouble(); System.out.println("enter rate in %:"); double rate=sc.nextDouble(); System.out.println("enter term in year:"); double term=sc.nextDouble(); double monPayment=MPayment(loan,rate,term); System.out.println("Monthly payment is: =" + monPayment); System.out.println("Do you want to continue? (Y/N):"); flag=sc.next(); } System.out.println("Thank you for using payment calculator!"); } public static double MPayment(double loan,double rate,double term){ double monPayment=(loan*rate/100/12)/(1-(Math.pow(1+rate/100/12,-12*term))); return monPayment; }

Page 42: Loops ISYS 350. Three Types of Loops while loop do while loop for loop

Murach’s Java SE 6, C4 © 2007, Mike Murach & Associates, Inc.Slide 42

How to code and call static methods To allow other classes to access a method, use the public access

modifier. To prevent access, use the private modifier.

To code a method that returns data, code a return type in the method declaration and code a return statement in the body of the method. The return statement ends the execution of the method and returns the specified value to the calling method.

Within the parentheses of a method, you can code an optional list of one or more parameters that consist of a data type and name. These values that must be passed to the method when it is called.

The name of a method along with its parameter list form the signature of the method, which must be unique.

When you call a method, the arguments in the argument list must be in the same order as the parameters in the parameter list and they must have compatible data types. However, the names of the arguments and the parameters don’t need to be the same.