## 1. Summing numbers using a `while` loop

Let's write a program that reads numbers from the keyboard (as long as the user enters something that looks like a number) and then displays their sum on the screen. Here's how the code of such a program would look (we're only showing the code inside the `main` method).

Code Explanation
``````Scanner console = new Scanner(System.in);
int sum = 0;
while (console.hasNextInt())
{
int x = console.nextInt();
sum = sum + x;
}
System.out.println(sum); ``````
Create a `Scanner` object to read data from the console.
We will store the sum of the numbers in the `sum` variable.
As long as numbers are entered from the console

read the next number into the `x` variable.
Add `x` to the sum of numbers (the `sum` variable).

Display the calculated sum on the screen.

## 2. Finding the maximum number using a `while` loop

Our second program will also read numbers from the keyboard (as long as the user enters something number-like), but now we want to display the largest of the numbers entered. Here's how the code of such a program would look (we're only showing the code inside the `main` method).

Code Explanation
``````Scanner console = new Scanner(System.in);
int max = 0;
while (console.hasNextInt())
{
int x = console.nextInt();
if (x > max)
max = x;
}
System.out.println(max); ``````
Create a `Scanner` object to read data from the console.
The `max` variable will store the maximum of the numbers.
As long as numbers are entered from the console

read the next number into the `x` variable.
Compare `x` and `max`. If `x` is greater than `max`,
update the maximum.

Display the maximum number on the screen.

Here's an interesting point: if all the numbers entered from the keyboard are negative, then the program will display `0`. Which is incorrect.

As a result, the initial value of the max variable should be as small as possible.

Option 1:

You can set it equal to `-2,000,000,000` (negative two billion). This isn't a bad start.

Option 2:

Assign the smallest possible `int` value. There's a special constant for this: `Integer.MIN_VALUE`;

Option 3:

Better yet, initialize `max` with the first number entered. This is the best option. But this will only work if the task conditions require the user to enter at least one number.

4