Lesson Weekend

In the last lesson, we covered `if` and `else`. In this lesson, we'll explore logical operators we can use for more complex branching. We'll create an application that tells a user how expensive a hotel stay is likely to be.

## Branching with Conditionals

Our application will estimate if someone's hotel stay is likely to be expensive based on the season and day of the week. After all, hotels are usually more expensive during peak travel season (summer) and on weekends.

### Application Setup

Let's start by collecting information from the user and saving several boolean variables.

HotelCost.cs
``````using System;

class HotelCost
{
static void Main()
{
Console.WriteLine("In what season are you booking a stay?");
string season = Console.ReadLine();

Console.WriteLine("On the weekend or a weeknight?");
string dayOfWeek = Console.ReadLine();

bool summer = season == "summer";
bool weekend = dayOfWeek == "weekend";
}
}
``````

In addition to collecting user input and storing it in variables, we also define two booleans using the data type `bool`:

• A `summer` boolean will be set to `true` if the `season` collected from the user is equal to the string `"summer"`.

• A `weekend` boolean will be `true` if the `dayOfWeek` collected from the user is equal to the string `"weekend"`.

### Branching with Multiple Booleans Using `&&`

Let's return different statements to the user based upon the combined values of these two booleans using the `&&` operator:

HotelCost.cs
``````using System;

class HotelCost
{
static void Main()
{
Console.WriteLine("In what season are you booking a stay?");
string season = Console.ReadLine();

Console.WriteLine("On the weekend or a weeknight?");
string dayOfWeek = Console.ReadLine();

bool summer = season == "summer";
bool weekend = dayOfWeek == "weekend";

if (summer && weekend)
{
Console.WriteLine("Your stay is probably going to be pretty expensive. It's both peak travel season AND the weekend.");
}
else
{
Console.WriteLine("Your stay might be expensive, but it could be worse!");
}
}
}
``````

In our `if` statement, `if (summer && weekend)`, we use the `&&` operator. This checks whether each of these statements are true. If so, the entire statement evaluates to `true`. If one or both statements evaluate to `false`, the entire statement evaluates to `false`.

If both the `summer` and the `weekend` booleans are `true`, our program will tell the user, "Your stay is probably going to be pretty expensive. It's both peak travel season AND the weekend.". We can test this out by launching our program:

``````\$ dotnet run
``````

Note that user input needs to be lowercase for any of our boolean statements to return true. We'll discuss how to normalize user input later on.

### More Complex Branching with `else if`

We can do more complex branching with the `else if` keyword:

HotelCost.cs
``````using System;

class HotelCost
{
static void Main()
{
Console.WriteLine("In what season are you booking a stay?");
string season = Console.ReadLine();

Console.WriteLine("On the weekend or a weeknight?");
string dayOfWeek = Console.ReadLine();

bool summer = season == "summer";
bool weekend = dayOfWeek == "weekend";

if (summer && weekend)
{
Console.WriteLine("Your stay is probably going to be pretty expensive. It's both peak travel season AND the weekend.");
}
else if (summer)
{
Console.WriteLine("Your stay might be more expensive than normal!");
}
else if (weekend)
{
Console.WriteLine("Your stay might be more expensive than normal!");
}
else
{
Console.WriteLine("Your stay might be expensive, but it could be worse!");
}
}
}
``````

In C#, we can use as many `else if`s as necessary.

• In the code above, if both `summer` and `weekend` are true, the application will state "Your stay is probably going to be pretty expensive. It's both peak travel season AND the weekend." However, if they aren't both true, our program will look at the next condition.

• If just `summer` is true, the program will print "Your stay might be more expensive than normal!. If it is not `true`, the program will move to the next statement.

• If just `weekend` is true, the program will print "Your stay might be more expensive than normal!". If it isn't `true`, the program will move to the next statement.

• If none of the previous conditionals are true, the program will reach the `else` statement and print "Your stay might be expensive, but it could be worse!".

## Terminology

`&&` operator: Used to check if multiple statements are true. For instance, in `if (summer && weekend)`, if both statements are true, the whole conditional statement evaluates to true. If one or both statements are false, the whole statement evaluates to false.

`else if`: We can use `else if` to add more than two conditions.

Lesson 2 of 9
Last updated more than 3 months ago.