

















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
program will terminate. • A common programming error involves infinite loops. Loop. Continuation. Condition? true. Statement( ...
Typology: Exercises
1 / 25
This page cannot be seen from the preview
Don't miss anything!


















while (loop-continuation-condition) { // loop-body Statement(s); }
int count = 0; while (count < 100) { System.out.println("Welcome to Java!"); count++; }
FIGURE 4.1 The while loop repeatedly executes the statements in the loop body when the loop-continuation-condition evaluates to true.
Loop Continuation Condition? true Statement(s) (loop body)
false (count < 100)?
true System.out.println("Welcome to Java!"); count++;
false
(A) (B)
count = 0;
import java.util.Scanner;
public class SubtractionQuizLoop { public static void main(String[] args) { final int NUMBER_OF_QUESTIONS = 5; // Number of questions int correctCount = 0; // Count the number of correct answers int count = 0; // Count the number of questions long startTime = System.currentTimeMillis(); String output = ""; // output string is initially empty Scanner input = new Scanner(System.in);
while (count < NUMBER_OF_QUESTIONS) { // 1. Generate two random single-digit integers int number1 = (int)(Math.random() * 10); int number2 = (int)(Math.random() * 10);
// 2. If number1 < number2, swap number1 with number if (number1 < number2) { int temp = number1; number1 = number2; number2 = temp; }
// 3. Prompt the student to answer “What is number1 – number2?” System.out.print( "What is " + number1 + " - " + number2 + "? "); int answer = input.nextInt();
// 4. Grade the answer and display the result if (number1 - number2 == answer) { System.out.println("You are correct!"); correctCount++; } else System.out.println("Your answer is wrong.\n" + number
// Increase the count count++;
output += "\n" + number1 + "-" + number2 + "=" + answer + ((number1 - number2 == answer)? " correct" : " wrong"); }
long endTime = System.currentTimeMillis(); long testTime = endTime - startTime;
System.out.println("Correct count is " + correctCount + "\nTest time is " + testTime / 1000 + " seconds\n" + output); } }
What is 9 - 2? 7 Your answer is correct!
What is 3 - 0? 3 Your answer is correct!
What is 3 - 2? 1 Your answer is correct!
What is 7 - 4? 4 Your answer is wrong. 7 - 4 should be 3
What is 7 - 5? 4 Your answer is wrong. 7 - 5 should be 2
Correct count is 3 Test time is 1021 seconds Ï 9-2=7 correct 3-0=3 correct 3-2=1 correct 7-4=4 wrong 7-5=4 wrong
double item = 1; double sum = 0; while (item != 0) { // No guarantee item will be 0 sum += item; item -= 0.1; } System.out.println(sum);
java SentinelValue < input.txt
java ClassName > output.txt
java SentinelValue < input.txt > output.txt
import java.util.Scanner;
public class TestDoWhile { /** Main method */ public static void main(String[] args) { int data; int sum = 0;
// Create a Scanner Scanner input = new Scanner(System.in);
// Keep reading data until the input is 0 do { // Read the next data System.out.print( "Enter an int value (the program exits if the input is 0): "); data = input.nextInt();
sum += data; } while (data != 0);
System.out.println("The sum is " + sum); } }
Enter an int value (the program exits if the input is 0): 2 Enter an int value (the program exits if the input is 0): 3 Enter an int value (the program exits if the input is 0): 4 Enter an int value (the program exits if the input is 0): 0 The sum is 9
for (initial-action; loop-continuation-condition; action-after-each-iteration) { //loop body; Statement(s); }
int i; for (i = 0; i < 100; i++) { System.out.println("Welcome to Java! ”); }
FIGURE 4.3 A for loop performs an initial action one, then repeatedly executes the statements in the loop body, and performs an action after an iteration when the loop- continuation-condition evaluates as true
Loop Continuation Condition? true Statement(s) (loop body)
false
(A)
Action-After-Each-Iteration
Initial-Action
(i < 100)?
true System.out.println( "Welcome to Java");
false
(B)
i++
i = 0
while (loop-continuation-condition) { // Loop body } (a)
Equivalent
(b)
for ( ; loop-continuation-condition; ) // Loop body }
for (initial-action; loop-continuation-condition; action-after-each-iteration) { // Loop body; } (a)
Equivalent
(b)
initial-action; while (loop-continuation-condition) { // Loop body; action-after-each-iteration; }
for (int i = 0; i < 10; i++); // Logic Error (‘;’) { System.out.println("i is " + i); }
int i=0; while (i<10); // Logic Error (‘;’) { System.out.println("i is " + i); i++; }
int i=0; do { System.out.println("i is " + i); i++; } while (i<10); // Correct, The semicolon is needed
public class TestSum { public static void main(String[] args) { // Initialize sum float sum = 0;
// Add 0.01, 0.02, ..., 0.99, 1 to sum for (float i = 0.01f; i <= 1.0f; i = i + 0.01f) sum += i;
// Display result System.out.println("The sum is " + sum); } }
o The for loop repeatedly adds the control variable i to the sum. This variable, which begins with 0.01, is incremented by 0.01 after each iteration. The loop terminates when i exceeds 1.0. o The exact sum should be 50.50 , but the answer is 50.499985. The result is not precise because computers use a fixed number of bits to represent floating-point numbers, and thus cannot represent some floating-point number exactly.
public class TestSum { public static void main(String[] args) { // Initialize sum double sum = 0;
// Add 0.01, 0.02, ..., 0.99, 1 to sum for (double i = 0.01; i <= 1.0; i = i + 0.01) sum += i;
// Display result System.out.println("The sum is " + sum); } }
The sum is 50.
The sum is 49.
public class TestSum { public static void main(String[] args) { // Initialize sum double sum = 0; double currentValue = 0.01;
// Add 0.01, 0.02, ..., 0.99, 1 to sum for (int count = 0; count < 100; count++) { sum += currentValue; currentValue += 0.01; }
// Display result System.out.println("The sum is " + sum); } }
The sum is 50.
double tuition = 10000; int year = 1 // Year 1 tuition = tuition * 1.07; year++; // Year 2 tuition = tuition * 1.07; year++; // Year 3 tuition = tuition * 1.07; year++; // Year 4 ...
public class FutureTuition { public static void main(String[] args) { double tuition = 10000; // Year 1 int year = 1; while (tuition < 20000) { tuition = tuition * 1.07; year++; }
System.out.println("Tuition will be doubled in "
Tuition will be doubled in 12 years
false
true
Statement(s)
Next Statement
Continue condition?
Statement(s)
continue
false
true
Statement(s)
Next Statement
Continuation condition?
Statement(s)
break