Except where otherwise noted, the contents of this document are Copyright 2013 Stuart Reges and Marty Stepp.
lab document created by Marty Stepp, Stuart Reges and Whitaker Brand
Goals for this problem set:
while loops for indefinite repetitionwhile Loops
A while loop repeats indefinitely until a given condition is met.
while (test) {
statement(s);
}
Example:
int num = 1;
while (num < 5) {
System.out.print(n + " "); // output: 1 2 3 4
n++;
}
while loop basicsConsider the following loop.
int x = 1;
System.out.print(x);
while (x < 100) {
x = x + x;
System.out.print(", " + x);
}
How many times does the code in the while loop execute?
|
7 |
| What output is produced by the overall code? | 1, 2, 4, 8, 16, 32, 64, 128 |
while loop mystery
Fill in the boxes at right with the output produced by each method call.
public static void mystery(int x) {
int y = 1;
int z = 0;
while (2 * y <= x) {
y = y * 2;
z++;
}
System.out.println(y + " " + z);
}
|
|
while loop mystery
Fill in the boxes at right with the output produced by each method call.
public static void mystery2(int x, int y) {
int z = 0;
while (x % y != 0) {
x = x / y;
z++;
System.out.print(x + ", ");
}
System.out.println(z);
}
|
|
while loop mystery
Fill in the boxes at right with the output produced by each method call.
public static void mystery3(int x) {
int y = 0;
while (x % 2 == 0) {
y++;
x = x / 2;
}
System.out.println(x + " " + y);
}
|
|
while loop mystery
Fill in the boxes at right with the output produced by each method call.
public static void mystery4(int n) {
int x = 1;
int y = 2;
while (y < n) {
if (n % y == 0) {
n = n / y;
x++;
} else {
y++;
}
}
System.out.println(x + " " + n);
}
|
|
digitSum that accepts an integer as a parameter and returns the sum of the digits of that number.
For example, the call digitSum(29107) returns 2+9+1+0+7 or 19.
For negative numbers, return the same value that would result if the number were positive.
For example, digitSum(-456) returns 4+5+6 or 15.
The call digitSum(0) returns 0.
use / 10 and % 10 operations.)
Modify your previous ProcessName program so that it re-prompts until
the user types a name that is at least 5 letters total in length and has at
least one space in it. Example:
Type your name: Joe Error, must be at least 5 chars with a space. Type your name: O K! Error, must be at least 5 chars with a space. Type your name: what Error, must be at least 5 chars with a space. Type your name: Tyler Durden Your name is: Durden, T.
A fencepost loop is a common algorithmic pattern where you want to perform N tasks with N-1 things between them. It's like a fence with N posts with N-1 wires between the posts.
To achieve this, place one "post" outside your loop, then alternate between "wires" and "posts" inside the loop.
Example:
System.out.print(1); // |==|==|==|==| fence for (int i = 2; i <= 5; i++) { System.out.print(".." + i); // 1..2..3..4..5 }
printLetters that takes a String as its parameter and that prints the letters of the String, separated by dashes.
For example, the call of printLetters("Rabbit") should print:
R-a-b-b-i-t
String object has a length method that tells you how many characters are in the String and a charAt method that gets you individual characters of
the String.)
printFactors that accepts an integer as its parameter and uses a fencepost loop to print the factors of that number, separated by the word "and".
For example, the call printFactors(24) should print the following output:
1 and 2 and 3 and 4 and 6 and 8 and 12 and 24