Question

In: Computer Science

Write a Java class called GuessMyNumber that prompts the user for an integer n, tells the...

Write a Java class called GuessMyNumber that prompts the user for an integer n, tells the user to think of a number between 0 and n−1, then makes guesses as to what the number is.

After each guess, the program must ask the user if the number is lower, higher, or correct. You must implement the divide-and-conquer algorithm from class. In particular, you should round up when the middle of your range is in between two integers.

(For example, if your range is 0 to 31, you should guess 16 and not 15, but if your range is 0 to 30 you should certainly guess 15).

The flow should look like the following:

Enter n: 32

Welcome to Guess My Number!

Please think of a number between 0 and 31.

Is your number: 16?

Please enter C for correct, H for too high, or L for too low.

Enter your response (H/L/C):

H Is your number: 8?

Please enter C for correct, H for too high, or L for too low.

Enter your response (H/L/C): L

Is your number: 12?

Please enter C for correct, H for too high, or L for too low.

Enter your response (H/L/C): C

Thank you for playing Guess My Number!

As part of your implementation, you should check that n is not 0 or negative. (You need not worry about the case where the user enters a non-integer). You should also check that the user is entering one of the letters H, L, or C each time your program makes a guess. This flow should look like the following: Enter n: -1

Enter a positive integer for n: 32

Welcome to Guess My Number!

Please think of a number between 0 and 31.

Is your number: 16?

Please enter C for correct, H for too high, or L for too low.

Enter your response (H/L/C): asdf

Enter your response (H/L/C): H   Is your number: 8? ...

You can assume that the user will always give honest answers.

Solutions

Expert Solution

import java.util.*;
public class Main
{
   public static void main(String[] args)
   {
   Scanner s = new Scanner(System.in);
       System.out.println("Enter n: ");
       int n = s.nextInt();
       while(n<=0)
       {
       System.out.println("Enter a positive integer for n: ");
       n = s.nextInt();
       }
       System.out.println("Welcome to Guess My Number!");
       System.out.println("Please think of a number between 0 and "+(n-1)+".");
       int low=0,high=n-1;
       String c;
       int guess;
       do
       {
       guess = (int)Math.ceil(((low+high)/2)+0.5);
       System.out.println("Is your number: "+guess+"?");
       System.out.println("Please enter C for correct, H for too high, or L for too low.");
       System.out.println("Enter your response (H/L/C): ");
       c=s.next();
       while(!(c.equals("H")||c.equals("L")||c.equals("C")))
       {
       s.next();
       System.out.println("Enter your response (H/L/C): ");
       c=s.next();      
       }
       if(c.equals("H"))
       {
       high=(low+high)/2;
       }
       else if(c.equals("L"))
       {
       low=(low+high)/2;
       }
       }while(!c.equals("C")&&guess!=0&&guess!=n-1);
       System.out.println("Thank you for playing Guess My Number!");
   }
}

OUTPUT:

Enter n:
32
Welcome to Guess My Number!
Please think of a number between 0 and 31.
Is your number: 16?
Please enter C for correct, H for too high, or L for too low.
Enter your response (H/L/C):
H
Is your number: 8?
Please enter C for correct, H for too high, or L for too low.
Enter your response (H/L/C):
L
Is your number: 12?
Please enter C for correct, H for too high, or L for too low.
Enter your response (H/L/C):
C
Thank you for playing Guess My Number!



Related Solutions

JAVA Language: Write a program that prompts the user to enter a positive integer n (0...
JAVA Language: Write a program that prompts the user to enter a positive integer n (0 up to 232 -1). You must write a function that takes as input n and returns a string s representing the number n in binary. For this assignment, you must use the method of successive division by 2 to convert the number to binary. Your main program must print out s. Example: If the user enters the number 66, your program must print out...
Problem 1 Write a program that prompts the user to enter an integer It then tells...
Problem 1 Write a program that prompts the user to enter an integer It then tells the user if the integers is a multiple of 2, 3, 5, 7 or none of the above. Program language is C Ex. Enter an integer 12 You entered 12 The number you entered is a multiple of 2 ----------------------------------------------- Enter an integer 11 You entered 11 The number you entered is not a multiple of 2, 3, 5, or 7
Write a Java program that prompts the user to enter a list of integer values and...
Write a Java program that prompts the user to enter a list of integer values and displays whether the list is sorted in increasing order or not. Here is a sample run. Note that the first number in the input indicates the number of the elements in the list. <Output> Enter list: 8 101516619111 The list is not sorted <End Output <Output> Enter list: 10 11344579 11 21 The list is already sorted <End Output Create a complete class for...
1. Write a Java program that prompts the user to enter three integer numbers. Calculate and...
1. Write a Java program that prompts the user to enter three integer numbers. Calculate and print the average of the numbers. 2. Write a Java program that uses a for loop to print the odd numbers from 1 to 20. Print one number per line in the command line window. 3. Write a program which asks the user to input the size of potatoe fries she would like to purchase, and based on the size, it will tell her...
Write Java code that prompts the user for a string and tells them if the grouping characters in that string are balanced.
Write Java code that prompts the user for a string and tells them if the grouping characters in that string are balanced. Grouping characters are ( and ), [ and ], and { and }. I got the basic idea for this problem from HackerRank. It’s also a very common interview question.*******************8Example output**************Enter the expression:{[()]} {[()]}is balancedEnter the expression: {()()} {()()}is balancedEnter the expression: {([[])} {([[])}is not balancedEnter the expression: {([)]} {([)]}is not balanced
Java Programming Create a program that prompts the user for an integer number and searches for...
Java Programming Create a program that prompts the user for an integer number and searches for it within an array of 10 elements. What is the average number of comparisons required to find an element in the array? Your program should print the number of comparisons required to find the number or determine that the number does not exist. Try finding the first and last numbers stored in the array. Run your program several times before computing the average.
Write a program which: Prompts the user for a positive integer >= 0 Validates the user...
Write a program which: Prompts the user for a positive integer >= 0 Validates the user input to ensure it is a positive integer >= 0 Allocate (dynamically) an array big enough for the data. Load the array with random numbers ranging in value from1 to 100 Display the elements of the array (unsorted) Display the elements of the array (sorted) Display the average Display the median Display the mode, if none, display appropriate message RESTRICTIONS No global variables No...
Write a program that prompts the user to enter a positive integer and then computes the...
Write a program that prompts the user to enter a positive integer and then computes the equivalent binary number and outputs it. The program should consist of 3 files. dec2bin.c that has function dec2bin() implementation to return char array corresponding to binary number. dec2bin.h header file that has function prototype for dec2bin() function dec2binconv.c file with main function that calls dec2bin and print results. This is what i have so far. Im doing this in unix. All the files compiled...
Problem 4 : Write a program that prompts the user to enter in an integer and...
Problem 4 : Write a program that prompts the user to enter in an integer and then prints as shown in the example below Enter an integer 5 // User enters 5 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 Bye
Write a program that prompts a user for an integer from 1 to 99 and prints...
Write a program that prompts a user for an integer from 1 to 99 and prints it as an amount in words. The program will loop in case the user wants to input an additional number. If the user enters -99, the program will exit. Example: Input: 89 Output: Eighty nine Input: 45 Output: Fourty five Input: -99 Output: Have a nice day. <program exits> For this project, you are to: 1) You should validate any data coming from the...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT