Complete that program by defining a pickMiddle function and
Complete that program, by defining a pickMiddle function, and by modifying the existing userDouble function:
pickMiddle takes three arguments, called first, second, third.
pickMiddle(first, second, third) returns the middle of the values of the three arguments.
Function userDouble takes one argument, called message, which is a string.
Function userDouble prints out the message, and then enters a loop, where:
The program waits for the user to enter a double number.
If the user enters an invalid number, the function prints that what the user entered \"is not a valid double\".
If the user enters \"q\" or \"Q\", then the program exits (the code provided already takes care of that).
If the user enters indeed a valid double number, the function returns that number.
Solution
Middles.java
import java.util.Scanner;
public class Middles
 {
 // This function gets a double number from the user.
 // It ensures that the user enters a valid double number.
 public static double userDouble(String message)
 {
    //Scanner class Object is sused to read the inputs entered by the user.
 Scanner in = new Scanner(System.in);
 double result = 0.0;
 while (true)
 {
 //getting the String entered by the user  
 System.out.printf(message);
 String s = in.next();
   
 /*Checking whether the string is equal to \"q\" or not
 * If yes,program will exit
 */
 if (s.toLowerCase().equals(\"q\"))
 {
 System.out.printf(\"Exiting...\ \");
 System.exit(0);
 }
 /* Parsing the String to double
 * If that value is not double type
 * It will Throw Exception.
 * And prompts user to enter again.
 */
 try
 {
    result=(Double.parseDouble(s));
 }
 catch(Exception e)
 {
    System.out.println(\":: Is not a valid double ::\");
    continue;
 }
 return result;
 }
   
 }
   
 public static void main(String[] args)
 {
    //This loop continues to iterate as until user press \'q\' or \'Q\'
 while (true)
 {
 double first = userDouble(\"please enter the first number, or q to quit: \");
 double second = userDouble(\"please enter the second number, or q to quit: \");
 double third = userDouble(\"please enter the third number, or q to quit: \");
   
 //Calling the method pickMiddle() by passing the arguments
 double middle = pickMiddle(first, second, third);
 System.out.printf(\"the middle value is %.1f\ \ \", middle);
 }
 }
//This method finds and returns the middle value of three numbers
 private static double pickMiddle(double first, double second, double third) {
   
    //Declaring local variable
    double middle=0.0;
   
 //If this condition satisfies then middle is first number
    if(first>second && first<third || first<second && first>third)
    {
        middle=first;
    }
    //If this condition satisfies then middle is second number
    else if(second>first && second<third || second<first && second>third)
    {
        middle=second;      
    }
    //If this condition satisfies then middle is third number
    else if(third>second && third<first || third<second && third>first)
    {
        middle=third;      
    }
   
    return middle;
 }
 }
__________________________________________
Output:
please enter the first number, or q to quit: t
 :: Is not a valid double ::
 please enter the first number, or q to quit: 56.67
 please enter the second number, or q to quit: 93.56
 please enter the third number, or q to quit: 45.56
 the middle value is 56.7
please enter the first number, or q to quit: 12.23
 please enter the second number, or q to quit: 78.65
 please enter the third number, or q to quit: 45.67
 the middle value is 45.7
please enter the first number, or q to quit: q
 Exiting...
____________________Thank You



