while - Department of Computer Science

advertisement
COM S 207
While-Loop Statement
Instructor: Ying Cai
Department of Computer Science
Iowa State University
yingcai@iastate.edu
Used to implement looping
Two key elements


test condition
body of loop
While loop
while (condition)
{
Statement1;
body of loop
Statement2;
:::
} // end while
false
Test Condition
true
Execute Statements
(body of loop)
As long as the condition is true, you execute all statements in the body
of the loop. When condition is false, you exit the loop.
Key Point: Some statement(s) in the body of the loop must eventually
make the condition false.
Example
int K = 0;
while (K < 4)
{
System.out.print(K + “ “);
K++;
}
output: 0 1 2 3
More Examples
int i = 0;
int sum = 0;
while (i < 4)
{
sum = sum + i;
i++;
}
System.out.println(sum);
More Examples
int i = 2;
int p = 1;
int total = 1;
while (p < 4)
{
total = i * total;
p++;
}
System.out.println(total);
More Examples
i = 0; sum = 0;
while (sum < 10)
{
i++; sum = sum + i;
Print i and sum;
}
i = 0; sum = 0;
while (sum < 10)
{
i++; sum = sum - i;
Print i and sum;
}
i = 0; sum = 0;
while (sum < 0)
{
i++; sum = sum + i;
Print i and sum;
}
i = 0; sum = 0;
while (sum >= 10)
{
i++; sum = sum + i;
Print i and sum;
}
Hand-Tracing Loops
int n = 1729;
int sum = 0;
while (n > 0)
{
int digit = n % 10;
sum = sum + digit;
n = n / 10;
}
N
Sum
1729
0
digit
Common Error 1: Infinite Loop
Forgetting to update the variable that eventually
makes the loop condition false
int year = 1;
while (year <= 20)
{
double interest = balance * rate /100.0;
balance = balance + interest;
} // end while
Common Error 1: Infinite Loop
Forgetting to update the variable that eventually
makes the loop condition false
int year = 1;
while (year > 0)
{
double interest = balance * rate /100.0;
balance = balance + interest;
year++;
} // end while
Common Error 2: Off-by-One Error or
Boundary Condition Error
int year = 0;
while (balance < TARGET)
{
year++;
double interest = balance * rate /100.0;
} // end while
System.out.println(“the interest doubled after ”
+ year + “years.”);
Questions:
1) Should year start at 0 or 1?
2) Should you test for (balance <TARGET ) or
(balance <= TARGET)
Exercise
Write a Java program that prompts the user for a positive
integers value and outputs the numbers (1 2 3 4 …) up to
the number that is inputted.
Scanner in = new Scanner(System.in);
System.out.println(“Enter in a positive number: “);
int lastNumber = in.nextInt();
int cntr = 1;
System.out.println(“ “);
while (cntr <= lastNumber)
{
System.out.print(cntr + “ “);
cntr++;
}
Write Loops that computes
1) the sum of all integers between 2 and 100 (inclusive)
2) the sum of all EVEN integers between 2 and 100
(exclusive)
3) the sum of all SQUARES of integers between -300 and
+300 (inclusive)
4) the average of all ODD integers between 1 and 100
(inclusive)
Download