In this lab, we will demonstrate how to use the while loop. We will also look into the advanced Java classes that we will study in later lectures.
By the end of this lab, learners will be able to use while loop in java
While loop Overview
A while loop will continually process a statement or given code block while its evaluation expression is true.
while (condition) {statement(s)}
Example #1: Guess the Number
Write a program that randomly generates an integer between 0 and 100, inclusive. The program should prompt the user to enter a number repeatedly until the number matches the randomly generated number. For each user input, the program tells the user whether the input is too low or too high. When the user discovers the correct answer, the program outputs a congratulatory message, and then provides the user with the opportunity to play again.
Solution: Guess the Number
Make a new class named GuesstheNumber. Inside, write the code shown below.
importjava.util.Scanner;publicclassGuesstheNumber {publicstaticvoidmain(String[] args) {// Generate a random number to be guessedint number = (int) (Math.random() *101);Scanner input =newScanner(System.in);System.out.println("Guess a magic number between 0 and 100");int guess =-1;while (guess != number) {// Prompt the user to guess the numberSystem.out.print("\\\\nEnter your guess: "); guess =input.nextInt();if (guess == number)System.out.println("Yes, the number is "+ number);elseif (guess > number)System.out.println("Your guess is too high");elseSystem.out.println("Your guess is too low"); } // End of loop }}
Example #2: An Advanced Math Tool
Write a program that generates five single-digit integer subtraction problems. Using a while loop, prompt the user to answer all five problems. After all of the answers are entered, report the number of the correct answers. Offer the user the opportunity to play the game again.
Solution: SubtractionQuizLoop
Make a new class named SubtractionQuizLoop. Inside, write the code shown below.
publicclassSubtractionQuizLoop {publicstaticvoidmain(String[] args) {finalint NUMBER_OF_QUESTIONS =5; // Number of questionsint correctCount =0; // Count the number of correct answersint count =0; // Count the number of questionslong startTime =System.currentTimeMillis();String output =""; // output string is initially emptyScanner input =newScanner(System.in);while (count < NUMBER_OF_QUESTIONS) {// 1. Generate two random single-digit integersint number1 = (int) (Math.random() *10);int number2 = (int) (Math.random() *10);// 2. If number1 < number2, swap number1 with number2if (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 resultif (number1 - number2 == answer) {System.out.println("You are correct!"); correctCount++; } elseSystem.out.println("Your answer is wrong.\\\\n"+ number1+" - "+ number2 +" should be "+ (number1 - number2));// Increase the count count++; output +="\\\\n"+ number1 +"-"+ number2 +"="+ answer + ((number1 - number2 == answer) ?" correct":" wrong"); }}}
Example #3: Controlling a Loop with a Sentinel Value
Write a program that reads and calculates the sum of an unspecified number of integers. The input 0 signifies the end of the input. If data is not 0, it is added to the sum, and the next input data are read. If data is 0, the loop body is not executed, and the while loop terminates. If the first input read is 0, the loop body never executes, and the resulting sum is 0.
Suggested Output
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
Solution: SentinelValuedemo
Make a new class named SentinelValuedemo. Inside, write the code shown below.
publicclassSentinelValuedemo{publicstaticvoidmain(String[] args) {// Create a ScannerScanner input =newScanner(System.in);// Read an initial dataSystem.out.print("Enter an int value (the program exits if the input is 0): ");int data =input.nextInt();// Keep reading data until the input is 0int sum =0;while (data !=0) { sum += data;// Read the next dataSystem.out.print( "Enter an int value (the program exits if the input is 0): "); data =input.nextInt(); }System.out.println("The sum is "+ sum); }}