# Finding min/max with input

The code segment below finds (and prints) the minimum and maximum of values accepted as input.

``````Scanner fromKeyboard = new Scanner(System.in);

System.out.print("How many values (>= 1)? ");
int numValues = fromKeyboard.nextInt();
fromKeyboard.nextLine();

System.out.print("Value?: ");
int input = fromKeyboard.nextInt();
fromKeyboard.nextLine();

int min = input;
int max = input;

for(int valNum = 2; valNum <= numValues; valNum++)
{
System.out.print("Value?: ");
input = fromKeyboard.nextInt();
fromKeyboard.nextLine();

if(input < min)
min = input;

if(input > max)
max = input;
}

fromKeyboard.close();

System.out.println("Min: " + min);
System.out.println("Max: " + max);
``````

The algorithm is the same as for finding the minimum/maximum of values from any source. The first value is accepted before the loop. Both the minimum and maximum are set to the first value that could be the minimum/maximum (the first value entered).

## Extensions

The code segment above requires that the user specify the number of values before entering any values. This allows requiring at least 1 value and setting the minimum/maximum to the first thing that could be the min/max. As an alternative, values may be accepted until a sentinel is entered as in Input with a sentinel. This presents additional challenges, including choosing appropriate initial values for the min/max and limiting the range of values that can be entered.

As with many examples of finding the minimum/maximum, the user is required to enter at least 1 value. The code segment above does not attempt to validate that the user entered a value `>= 1` as the number of values. See Input validation for a discussion of how to accept only valid input.