This practice will be retired on May 1, 2025.
Heads up! To view this whole video, sign in with your Courses account or enroll in your free 7-day trial. Sign In Enroll
Preview
Start a free Courses trial
to watch this video
In this video, we'll explain the solution to the challenge.
This video doesn't have any notes.
Related Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign upRelated Discussions
Have questions about this video? Start a discussion with the community and Treehouse staff.
Sign up
Welcome back, how did it go?
0:00
It's okay if you weren't
able to complete every TODO.
0:02
When you're learning something new,
it's not unusual to struggle.
0:05
Let's walk through how I
implemented each improvement.
0:09
For the first task, we need to remove
the keepGoing variable, And replace
0:12
the reference to that variable in the
while loop condition with a value true.
0:18
This will cause the while loop to
execute until we break out of it.
0:24
For the next task,
0:30
we need to update the Console.Write method
call's argument to the string literal.
0:31
Enter a number between 1 and 1000.
0:37
Next, we need to force
the user's provided values for
0:42
the entry variable to lower case letters.
0:44
We can do that with a call to
the string ToLower method.
0:47
Forcing the user's provided values to
lower case will guarantee that our
0:52
equality comparison to the string
literal quit all in lower case.
0:56
Will always evaluate to true,
1:00
regardless if the user used
any capital letters or not.
1:02
Inside of the if statement we
need to replace this reference
1:06
to the keepGoing variable
with a break statement.
1:09
The break statement will cause the while
loop to immediately terminate and
1:13
execute the next line of
code after the wile loop.
1:18
Which in our case is this
call to the Console.WriteLine
1:21
method to display the text Goodbye!.
1:25
Now that we are breaking out the while
loop with this break statement
1:27
we no longer need the else statement.
1:30
So let's remove it,
1:33
Let's add a blank line there, then fix the
indication of the code by selecting it and
1:43
holding down Shift and pressing tab once.
1:49
For our next task we need to
add a try catch statement in
1:53
order to catch FormatException exceptions.
1:55
Let's start with adding try
followed by a set of curly braces.
1:59
Then catch, and a set of parentheses
followed by another set of curly braces.
2:05
Inside of the parentheses,
2:12
we need to specify the type of
exception that we want to catch.
2:14
We'll use (FormatException).
2:17
Which is the exception that'll be
thrown if the users provided value
2:21
can't be parsed to a number.
2:25
Then inside of the catch block, we want to
display a message to the user letting them
2:27
know that their provided value can't be
parsed to a number, so Console.writeLine.
2:33
Then for
the message let's display their provided
2:39
value followed by
the text is not a number.
2:43
Let's surround the user's provided
value with a set of single quotes
2:49
to help set it apart from
the rest of the message.
2:53
So, another string literal
followed by a plus sign
2:57
then inside these first set
of quotes add a single quote.
3:02
Then after the entry variable at
the beginning of the next string literal,
3:07
add another single quote.
3:12
Now let's move the rest of the code inside
of the while loop into the try block.
3:14
I put my cursor on the first line,
hold the Shift key down and press the down
3:19
arrow key until I've selected all
of the code that I want to move.
3:23
Then I'll press Ctrl + X or Cmd + X on
the Mac to cut selection to the clipboard.
3:27
Move my cursor to the beginning of the
line that contains the try block closing
3:36
curly brace and press Ctrl+V or Cmd+V
on the Mac to paste from the clipboard.
3:41
To fix the indentation of the code,
select the code and press the Tab key.
3:46
Next, we need to replace the int datatype
with a datatype that will allow for
3:55
fractional values like 2.5 or 5.75.
3:59
To do that we can switch to
using the double datatype.
4:04
Now that we're using the double
data type for the number variable.
4:11
We need to update the result
variable to be a double as well.
4:14
This is necessary because a double
multiplied by a double results in another
4:23
double, not an integer.
4:28
For our next two tasks, we need to
validate the user's provided value.
4:33
We have two validations to implement, so
I'll start with adding two if statements.
4:37
If and a set of parenthesis followed
by a set of curly braces, then again if
4:44
followed by a set of parenthesis
followed by another set of curly braces.
4:49
For the first validation,
4:56
you want to check if the user has entered
a value less than or equal to zero.
4:58
So let's compare the number
variable to the literal value 0.
5:03
For the comparison operator,
we can use less than or equal to.
5:07
If our expression evaluates to true,
we need to display a message to the user.
5:16
Let's add a call to
the Console.WriteLine method, for
5:21
the message text, I'll copy and
paste the text from this code comment.
5:25
For the second validation,
5:38
we want to check if the user has
entered a number greater than 1,000.
5:39
For our expression,
5:42
let's compare the number variable
to the literal value 1,000.
5:43
And for the comparison operator,
we can use greater than.
5:48
For our message, let's add another
call to the Console.WriteLine method,
5:54
and copy and
paste the text from the code comment.
5:59
There is one more thing we need to
do to finish up our validations.
6:09
If either of our if statements evaluates
to true, we can skip executing
6:13
the rest of the code in the while loop and
continue execution with the next loop.
6:18
We could do this by adding
a continuous statement
6:23
just after each of the ConsoleWriteLine
method calls inside of the if statements.
6:25
Here is the first, continue and
the second continue.
6:31
Now, if the user enters an invalid
value they'll see one of our
6:39
validation messages and
then be prompted to enter another value.
6:43
Before we test our solution,
let's make one more change to our code.
6:47
Notice that our validations
are mutually exclusive,
6:51
meaning that they'll never
both evaluate to true.
6:55
Because of this we can rewrite our two
independent if statements into an if else
6:58
if statement.
7:03
To be clear, this change won't
affect the behavior of our program.
7:07
But it does help clarify
the intent of our code,
7:12
which is something that we as
developers should always strive for.
7:15
All right,
we've completed all of the tasks.
7:19
Save the file by pressing Ctrl+S,
or Cmd+S on the Mac or
7:22
select the File>Save menu item.
7:25
Now let's compile and run our program.
7:30
Show the console by selecting
the View > Show Console menu item.
7:33
Run the command mcs Program.cs
to compile our program.
7:39
Now we can run the program using
the command mono space Program.exe.
7:45
Here's a prompt asking me for a number,
7:53
I'll enter a whole number say 3 and
there is my number squared.
7:56
3 multiplied by itself is equal to 9.
8:01
Let's try another number,
this time a fractional number 2.5.
8:04
2.5 multiplied by itself is equal to 6.25.
8:09
Now let's try entering
some random text and
8:14
we see a message letting us
know that asdf is not a number.
8:18
And we're prompted to
enter another number.
8:24
Let's try entering zero and
we see the first validation message.
8:26
Let's try a number less than zero.
8:31
And we see the first
validation message again.
8:32
Now let's try a number greater than 1000.
8:36
And we see the second validation message.
8:40
Now let's type quit, all in capital
letters and the program exits.
8:43
Great job completing
this practice session.
8:49
Implementing all these improvements really
helps to improve the overall quality of
8:52
the program.
8:56
Thanks for practicing with me,
and we'll see you next time.
8:57
You need to sign up for Treehouse in order to download course files.
Sign upYou need to sign up for Treehouse in order to set up Workspace
Sign up