Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383

Post on 20-Jan-2016

35 views 0 download

description

CSC141 Computer Science I. Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383 zjiang@wcupa.edu. Loop. Price is right. Sample execution (click on this link to try) http://www.cis.temple.edu/~jiang/price_is_right.exe - PowerPoint PPT Presentation

Transcript of Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383

Zhen Jiang

Dept. of Computer Science

West Chester University

West Chester, PA 19383

zjiang@wcupa.edu

CSC141 Computer Science I

04/21/23 1

Price is right. Sample execution (click on this link to

try) http://www.cis.temple.edu/~jiang/price_is_right.exe

Each button in the above sample REPEAT …?

Loop

04/21/23 2

While loop Format & Logic, page 197, Figure 4-1. Sample, code 4-3, page 198.

04/21/23 3

404/21/23

<initialization>;while (<test>) {

<body>;}

Do-while loop Format, page 208 Logic, page 209, Figure 4-6. Sample, code 4-6, page 209.

04/21/23 5

6

How does this differ from the while loop?

The controlled <statement(s)> will always execute the first time, regardless of whether the <test> is true or false.

04/21/23

For loop Format, page 212, Figure 4-7. Logic, page 212, Figure 4-8. Sample, code 4-7, page 213.

04/21/23 7

8

for (<init>; <test>; <update>) { <body>;

}

04/21/23

04/21/23 9

Summary

Body first, and thenevent change/update

Development process http://www.cis.temple.edu/~jiang/

LoopDevelopment.htm

04/21/23 10

04/21/23 11

Controlling Number of Loop Iterations If the number of iterations is known

before the loop starts, the loop is called a count-controlled loop. Counter =0, counter++, counter

<number Counter = 1, counter++, counter

<=number Use for loop for an easy

development.

04/21/23 12

04/21/23 13

04/21/23 14

15

Code:for (int i = 1; i <= 4; i++) { System.out.println(i + " squared is " + (i * i));}

Output:1 squared is 12 squared is 43 squared is 94 squared is 16

04/21/23

16

Code:n=keyboard.nextInt(); // try 6!for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { System.out.print("*"); } System.out.println();}

Output:************************************

04/21/23

17

Code: n=keyboard.nextInt(); // try 5!

for (int i = 1; i <= n; i++) { for (int j = 1; j <= 10; j++) { System.out.print((i * j) + " "); } System.out.println(); }

Output:1 2 3 4 5 6 7 8 9 102 4 6 8 10 12 14 16 18 203 6 9 12 15 18 21 24 27 304 8 12 16 20 24 28 32 36 405 10 15 20 25 30 35 40 45 50

04/21/23

18

Code:n=keyboard.nextInt(); // try 6!for (i = 1; i<=n; i++) System.out.print(“*”);System.out.println(“”);for (i = 1; i <= n-2; i++) {

System.out.print(“*”); for (int j = 1; j <= n-2; j++)

System.out.print(“ ”); System.out.println(“*”);}for (i = 1; i<=n; i++) System.out.print(“*”);System.out.println(“”);

Output:******* ** ** ** *******

04/21/23

19

Code:n=keyboard.nextInt(); // try 6!for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { System.out.print("*"); } System.out.println();}

Output:*********************

04/21/23

20

Code:n=keyboard.nextInt(); // try 6!for (int i = 1; i <= n; i++) { for (int j = 1; j <= i; j++) { System.out.print(i); } System.out.println();}

Output:122333444455555666666

04/21/23

21

Code:n=keyboard.nextInt(); // try 5!for (int i = 1; i <= n; i++) { for (int j = 1; j <= (n - i); j++) { System.out.print(" "); } for (int k = 1; k <= i; k++) { System.out.print(i); } System.out.println();}

Output: 1 22 333 44445555504/21/23

Otherwise (unknown or unclear), the loop is called a event-controlled loop. Use a while loop or a do-while loop for an

easy checkpoint development. Asking the user before each iteration if it is

time to end the loop is called the ask-before-iterating technique.

Appropriate status update (or event initializing) for a sequence of iterations

04/21/23 22

Controlling Event of Loop Iterations

04/21/23 23

24

Finds and prints a number's first factor other than 1:

int n = keyboard.nextInt(); // try 91int f = 2;while (n % f != 0) { f++;}System.out.println("First factor:" + f);

Sample run:First factor:7

04/21/23

25

Write a program that will repeatedly prompt the user to type a number until the user types a non-negative number, then square it.

Example log:

Type a non-negative integer: -5

Invalid number, try again: -1

Invalid number, try again: -235

Invalid number, try again: -87

Invalid number, try again: 11

11 squared is 121

04/21/23

26

System.out.print("Type a non-negative integer: ");int n = keyboard.nextInt();

while (n < 0) { System.out.print("Invalid number, try again: "); n = keyboard.nextInt();}

int square = n * n;System.out.println(n + " squared is " + square);

Notice that the number variable had to be declared outside the while loop in order to remain in scope.

04/21/23

27

Write a class named DigitSum that reads an integer from the user and prints the sum of the digits of that number. You may assume that the number is non-negative.

Example:

Enter a nonnegative number: 29107prints out 19 (i.e.,2+9+1+0+7 )

Hint: Use the % operator to extract the last digit of a number. If we do this repeatedly, when should we stop?04/21/23

28

import java.util.Scanner;public class DigitSum {

public static void main(String [] args) { Scanner keyboard = new Scanner(System.in); int n = keyboard.nextInt();

int sum = 0; while (n > 0) { sum += n % 10; // add last digit to sum n = n / 10; // remove last digit } System.out.println(“sum = “ + sum);

}}

04/21/23

29

Write a program named CountFactors that reads in an integer and displays its number of factors.

For example, if the user enters 60, CountFactors displays 12 because 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30, and 60 are all factors of 60.

Scanner keyboard = new Scanner(System.in); int n = keyboard.nextInt();

int sum = 0, k = ?; while ( ) {

} System.out.println(“sum = “ + sum);

04/21/23

Exercise population 

http://www.cis.temple.edu/~jiang/6billion.exe TV purchase

http://www.cis.temple.edu/~jiang/tv563.exe 1+2+4+8+...

http://www.cis.temple.edu/~jiang/1_2_4.exe 1+2+3+4+...+99

http://www.cis.temple.edu/~jiang/1to99.exe

04/21/23 30

04/21/23 31

Solution

04/21/23 32

File writing, page 237-240 Filename PringWriter Println Close Sample, code 4-17, page 237

04/21/23 33

Appending data to a (existing) file FileWriter (, true), page 240

04/21/23 34

File Reading, page 241-245 File Scanner nextXXXX( ) close Sample, code 4-18, page 242.

04/21/23 35

Detecting the end of a file hasNext Code 4-19, page 245.

Detecting the existence of a file exists Code 4-21, page 249.

04/21/23 36

Random number generator randomNumbers.nextXXX( ) Sample, code 4-23, page 253.

04/21/23 37

38

Objects of the Random class generate pseudo-random numbers.

Class Random is found in the java.util package.import java.util.*;

The methods of a Random object

returns a random real number in the range [0.0, 1.0)nextDouble()

returns a random integer in the range [0, max)

in other words, from 0 to one less than max

nextInt(max)

returns a random integernextInt()

DescriptionMethod name

04/21/23