Introduction to Conditional Switches
Introduction to Conditional Switches
Foundations of Switching a Case
Introduction
By now, we know that a conditional statement is a section of code that performs one or more comparisons on values and allows you to make a decision. In previous lessons, we performed those comparisons using logical operators and special keywords to make decisions. There are even more options to assist you in making decisions
Practical Learning: Switching a String
using static System.Console; WriteLine("=========================================="); WriteLine(" - Amazing DeltaX - State Income Tax -"); WriteLine("=========================================="); string stateName = ""; double taxRate = 0.00; WriteLine("Enter the information for tax preparation"); WriteLine("States"); WriteLine(" AK - Alaska"); WriteLine(" AR - Arkansas"); WriteLine(" CO - Colorado"); WriteLine(" FL - Florida"); WriteLine(" GA - Georgia"); WriteLine(" IL - Illinois"); WriteLine(" IN - Indiana"); WriteLine(" KY - Kentucky"); WriteLine(" MA - Massachusetts"); WriteLine(" MI - Michigan"); WriteLine(" MO - Missouri"); WriteLine(" MS - Mississippi"); WriteLine(" NV - Nevada"); WriteLine(" NH - New Hampshire"); WriteLine(" NC - North Carolina"); WriteLine(" PA - Pennsylvania"); WriteLine(" SD - South Dakota"); WriteLine(" TN - Tennessee"); WriteLine(" TX - Texas"); WriteLine(" UT - Utah"); WriteLine(" WA - Washington"); WriteLine(" WY - Wyoming"); Write("Enter State Abbreviation: "); string abbr = ReadLine(); WriteLine("--------------------------------------------"); Write("Gross Salary: "); double grossSalary = double.Parse(ReadLine()); double taxAmount = grossSalary * taxRate / 100.00; double netPay = grossSalary - taxAmount; WriteLine("============================================"); WriteLine(" - Amazing DeltaX - State Income Tax -"); WriteLine("--------------------------------------------"); WriteLine($"Gross Salary: {grossSalary:f}"); WriteLine($"State: {stateName}"); WriteLine($"Tax Rate: {taxRate:f}%"); WriteLine("--------------------------------------------"); WriteLine($"Tax Amount: {taxAmount:f}"); WriteLine($"Net Pay: {netPay:f}"); WriteLine("============================================");
========================================== - Amazing DeltaX - State Income Tax - ========================================== Enter the information for tax preparation States AK - Alaska AR - Arkansas CO - Colorado FL - Florida GA - Georgia IL - Illinois IN - Indiana KY - Kentucky MA - Massachusetts MI - Michigan MO - Missouri MS - Mississippi NV - Nevada NH - New Hampshire NC - North Carolina PA - Pennsylvania SD - South Dakota TN - Tennessee TX - Texas UT - Utah WA - Washington WY - Wyoming Enter State Abbreviation: FL -------------------------------------------- Gross Salary: 1558.85 ============================================ - Amazing DeltaX - State Income Tax - -------------------------------------------- Gross Salary: 1558.85 State: Tax Rate: 0.00% -------------------------------------------- Tax Amount: 0.00 Net Pay: 1558.85 ============================================ Press any key to close this window . . .
========================================== - Amazing DeltaX - State Income Tax - ========================================== Enter the information for tax preparation States AK - Alaska AR - Arkansas CO - Colorado FL - Florida GA - Georgia IL - Illinois IN - Indiana KY - Kentucky MA - Massachusetts MI - Michigan MO - Missouri MS - Mississippi NV - Nevada NH - New Hampshire NC - North Carolina PA - Pennsylvania SD - South Dakota TN - Tennessee TX - Texas UT - Utah WA - Washington WY - Wyoming Enter State Abbreviation: KY -------------------------------------------- Gross Salary: 1558.85 ============================================ - Amazing DeltaX - State Income Tax - -------------------------------------------- Gross Salary: 1558.85 State: Tax Rate: 0.00% -------------------------------------------- Tax Amount: 0.00 Net Pay: 1558.85 ============================================ Press any key to close this window . . .
A Case for a Conditional Selection
In a typical application, you have many comparisons to make. Some comparisons involve many variables but some comparisons are performed on only one variable and values. This means that you may have a situation where you want to compare one variable to many values. This time, you create a list of comparisons, then select which outcome applies to the conclusion you need to establish.
To perform a series of comparisons of one variable with one or more values, you use a keyword named switch. Like most comparison operators, including if that we saw in previous lessons, the switch keyword requires parentheses, as in switch(). In the parentheses, you must type the existing name of the variable on which you want to perform comparisons. In the previous lessons, we saw that the if operator doesn't require curly brackets if its code includes only one line of code but requires curly brackets if its body includes more than one line of code. The switch() conditional statement always uses more than one line of code. Therefore, it requires a body delimited by curly brackets:
switch(variable-name) { }
Once again, the section from the opening curly bracket ({) to the closing curly bracket (}) is the body of the switch() conditional statement. In that body, you must create one or more sections that would perform the necessary selections. Each section is created with a keyword named case. The case keyword creates its own section that includes the actual processing that must occur. As a result, this keyword must have its own delimiting body. Exceptionally (this is the only C# topic that functions like that), the body of a case section starts with a colon (:) and ends with a keyword named break, which is a statement and therefore must end with a semicolon. Therefore, the formula to create a switch statement is:
switch(expression) { case choice1: statement1; break; case choice2: statement2; break; case choice-n: statement-n; break; }
As mentioned above, you start with the switch() statement that is followed by a body delimited by curly brackets. In the parentheses of switch(), you can put the name of a variable. That variable must already exist and must hold a valid value. As we will see in later sections. The value in the parentheses of switch() can also be an expression that can be evaluated to a valid value. The body of the switch statement contains one or more sections that each starts with the case keyword. Each case section uses a body from a colon to a break; line. In that body, you will write code to process the outcome of that case or selection.
The switch statement accepts different types of expressions or values.
Switching an Integer
Probably the most regularly used type of value in a switch expression is a natural number. The object or expression passed to the switch can come from any source as long as it represents a constant integer.
In most cases, a switch statement behaves like an if conditional statement except that an if conditional statement may use fewer lines of code. Consider the following code that uses an if conditional statement:
using static System.Console;
int number = 248;
string conclusion = "That number is not right.";
if(number == 248)
conclusion = "That number is correct.";
WriteLine(conclusion);
WriteLine("========================================");
This would produce:
That number is correct. ======================================== Press any key to close this window . . .
The same code can be written with a switch statement as follows:
using static System.Console;
int number = 248;
string conclusion = "That number is not right.";
switch (number)
{
case 248:
conclusion = "That number is correct.";
break;
}
WriteLine(conclusion);
WriteLine("========================================");
We know that an if conditional statement can use one or more else options. Here is an example:
using static System.Console;
double incomeTax = 0.00;
WriteLine("Payroll Evaluation");
WriteLine("============================================");
WriteLine("Enter the information to evaluate taxes");
WriteLine("Frequency by which the payroll is processed:");
WriteLine("1 - Weekly");
WriteLine("2 - Biweekly");
WriteLine("3 - Semimonthly");
WriteLine("4 - Monthly");
Write("Enter Payroll Frequency: ");
int frequency = int.Parse(ReadLine());
WriteLine("--------------------------------------------");
Write("Gross Salary: ");
double grossSalary = double.Parse(ReadLine());
if(frequency == 1)
incomeTax = 271.08 + (grossSalary * 24 / 100);
else if(frequency == 2)
incomeTax = 541.82 + (grossSalary * 24 / 100);
else if(frequency == 3)
incomeTax = 587.12 + (grossSalary * 24 / 100);
else if(frequency == 4)
incomeTax = 1174.12 + (grossSalary * 24 / 100);
WriteLine("============================================");
WriteLine("Payroll Evaluation");
WriteLine("--------------------------------------------");
WriteLine("Gross Salary: {0,10:n}", grossSalary);
WriteLine("Income Tax: {0,10:n}", incomeTax);
WriteLine("============================================");
In the same way, a switch statement can use many cases. Here is an example:
using static System.Console;
double incomeTax = 0.00;
WriteLine("Payroll Evaluation");
WriteLine("============================================");
WriteLine("Enter the information to evaluate taxes");
WriteLine("Frequency by which the payroll is processed:");
WriteLine("1 - Weekly");
WriteLine("2 - Biweekly");
WriteLine("3 - Semimonthly");
WriteLine("4 - Monthly");
Write("Enter Payroll Frequency: ");
int frequency = int.Parse(ReadLine());
WriteLine("--------------------------------------------");
Write("Gross Salary: ");
double grossSalary = double.Parse(ReadLine());
switch (frequency)
{
case 1:
incomeTax = 271.08 + (grossSalary * 24 / 100);
break;
case 2:
incomeTax = 541.82 + (grossSalary * 24 / 100);
break;
case 3:
incomeTax = 587.12 + (grossSalary * 24 / 100);
break;
case 4:
incomeTax = 1174.12 + (grossSalary * 24 / 100);
break;
}
WriteLine("============================================");
WriteLine("Payroll Evaluation");
WriteLine("--------------------------------------------");
WriteLine("Gross Salary: {0,10:n}", grossSalary);
WriteLine("Income Tax: {0,10:n}", incomeTax);
WriteLine("============================================");
Switching a String
Besides a natural number, a switch statement can perform its case comparisons on a string value, such as a variable that holds a string value or an expression that produces a string. This means that each case must consider a possible value that the variable or expression may hold.
Practical Learning: Switching by Some Strings
using static System.Console;
WriteLine("==========================================");
WriteLine(" - Amazing DeltaX - State Income Tax -");
WriteLine("==========================================");
string stateName = "";
double taxRate = 0.00;
WriteLine("Enter the information for tax preparation");
WriteLine("States");
WriteLine(" AK - Alaska");
WriteLine(" AR - Arkansas");
WriteLine(" CO - Colorado");
WriteLine(" FL - Florida");
WriteLine(" GA - Georgia");
WriteLine(" IL - Illinois");
WriteLine(" IN - Indiana");
WriteLine(" KY - Kentucky");
WriteLine(" MA - Massachusetts");
WriteLine(" MI - Michigan");
WriteLine(" MO - Missouri");
WriteLine(" MS - Mississippi");
WriteLine(" NV - Nevada");
WriteLine(" NH - New Hampshire");
WriteLine(" NC - North Carolina");
WriteLine(" PA - Pennsylvania");
WriteLine(" SD - South Dakota");
WriteLine(" TN - Tennessee");
WriteLine(" TX - Texas");
WriteLine(" UT - Utah");
WriteLine(" WA - Washington");
WriteLine(" WY - Wyoming");
Write("Enter State Abbreviation: ");
string abbr = ReadLine();
WriteLine("--------------------------------------------");
Write("Gross Salary: ");
double grossSalary = double.Parse(ReadLine());
switch (abbr)
{
case "CO":
taxRate = 4.63;
stateName = "Colorado";
break;
case "FL":
taxRate = 0.00;
stateName = "Florida";
break;
case "IL":
taxRate = 4.95;
stateName = "Illinois";
break;
case "IN":
taxRate = 3.23;
stateName = "Indiana";
break;
case "KY":
taxRate = 5.00;
stateName = "Kentucky";
break;
case "MA":
taxRate = 5.00;
stateName = "Massachusetts";
break;
case "MI":
taxRate = 4.25;
stateName = "Michigan";
break;
case "NC":
taxRate = 5.25;
stateName = "North Carolina";
break;
case "NH":
taxRate = 5.00;
stateName = "New Hampshire";
break;
case "NV":
taxRate = 0.00;
stateName = "Nevada";
break;
case "PA":
taxRate = 3.07;
stateName = "Pennsylvania";
break;
case "TN":
taxRate = 1.00;
stateName = "Tennessee";
break;
case "TX":
taxRate = 0.00;
stateName = "Texas";
break;
case "UT":
taxRate = 4.95;
stateName = "Utah";
break;
case "WA":
taxRate = 0.00;
stateName = "Washington";
break;
case "WY":
taxRate = 0.00;
stateName = "Wyoming";
break;
}
double taxAmount = grossSalary * taxRate / 100.00;
double netPay = grossSalary - taxAmount;
WriteLine("============================================");
WriteLine(" - Amazing DeltaX - State Income Tax -");
WriteLine("--------------------------------------------");
WriteLine($"Gross Salary: {grossSalary:f}");
WriteLine($"State: {stateName}");
WriteLine($"Tax Rate: {taxRate:f}%");
WriteLine("--------------------------------------------");
WriteLine($"Tax Amount: {taxAmount:f}");
WriteLine($"Net Pay: {netPay:f}");
WriteLine("============================================");
========================================== - Amazing DeltaX - State Income Tax - ========================================== Enter the information for tax preparation States AK - Alaska AR - Arkansas CO - Colorado FL - Florida GA - Georgia IL - Illinois IN - Indiana KY - Kentucky MA - Massachusetts MI - Michigan MO - Missouri MS - Mississippi NV - Nevada NH - New Hampshire NC - North Carolina PA - Pennsylvania SD - South Dakota TN - Tennessee TX - Texas UT - Utah WA - Washington WY - Wyoming Enter State Abbreviation: CO -------------------------------------------- Gross Salary: 1558.85 ============================================ - Amazing DeltaX - State Income Tax - -------------------------------------------- Gross Salary: 1558.85 State: Colorado Tax Rate: 4.63% -------------------------------------------- Tax Amount: 72.17 Net Pay: 1486.68 ============================================ Press any key to close this window . . .
========================================== - Amazing DeltaX - State Income Tax - ========================================== Enter the information for tax preparation States AK - Alaska AR - Arkansas CO - Colorado FL - Florida GA - Georgia IL - Illinois IN - Indiana KY - Kentucky MA - Massachusetts MI - Michigan MO - Missouri MS - Mississippi NV - Nevada NH - New Hampshire NC - North Carolina PA - Pennsylvania SD - South Dakota TN - Tennessee TX - Texas UT - Utah WA - Washington WY - Wyoming Enter State Abbreviation: KY -------------------------------------------- Gross Salary: 1558.85 ============================================ - Amazing DeltaX - State Income Tax - -------------------------------------------- Gross Salary: 1558.85 State: Kentucky Tax Rate: 5.00% -------------------------------------------- Tax Amount: 77.94 Net Pay: 1480.91 ============================================ Press any key to close this window . . .
Switching an Enumeration
The switch operation supports values based on an enumeration. When creating the statement, you can pass an expression that holds the value of an enumeration. In the body of the switch clause, each case can represent one of the members of the enumeration.
Practical Learning: Switching an Enumeration
using static System.Console; double frequency = 0.00; double interestRate = 0.00; int periods = 42; CompoundFrequency compounding = CompoundFrequency.Monthly; WriteLine("Simple Interest"); WriteLine("--------------------------------------------------------"); WriteLine("Provide the values that will be used to evaluate a loan."); Write("Principal: "); double principal = double.Parse(ReadLine()); WriteLine("--------------------------------------------------------"); WriteLine("Compound Frequencies"); WriteLine("1. Weekly"); WriteLine("2. Monthly"); WriteLine("3. Quaterly"); WriteLine("4. Semiannually"); WriteLine("5. Annually"); Write("Type your choice: "); string choice = ReadLine(); if (choice == "1") compounding = CompoundFrequency.Weekly; else if (choice == "2") compounding = CompoundFrequency.Monthly; else if (choice == "3") compounding = CompoundFrequency.Quaterly; else if (choice == "4") compounding = CompoundFrequency.Semiannually; else if (choice == "5") compounding = CompoundFrequency.Annually; else compounding = CompoundFrequency.Daily; switch (compounding) { case CompoundFrequency.Daily: interestRate = 8.95; frequency = 365.00; break; case CompoundFrequency.Weekly: frequency = 52.00; interestRate = 11.95; break; case CompoundFrequency.Monthly: frequency = 12.00; interestRate = 14.75; break; case CompoundFrequency.Quaterly: frequency = 4.00; interestRate = 18.85; break; case CompoundFrequency.Semiannually: frequency = 2.00; interestRate = 22.55; break; case CompoundFrequency.Annually: frequency = 1.00; interestRate = 26.25; break; } double iRate = interestRate / 100; double per = periods / frequency; double interestAmount = principal * iRate * per; WriteLine("========================================================="); WriteLine("Simple Interest"); WriteLine("--------------------------------------------------------"); WriteLine("Principal: {0:f}", principal); WriteLine("Interest Rate: {0}%", interestRate); WriteLine("Periods: {0} months", periods); WriteLine("-------------------------------"); WriteLine("Interest Amount: {0:f}", interestAmount); WriteLine("Future Value: {0:f}", principal + interestAmount); Write("========================================================="); public enum CompoundFrequency { Daily, Weekly, Monthly, Quaterly, Semiannually, Annually }
Simple Interest -------------------------------------------------------- Provide the values that will be used to evaluate a loan. Principal: 7248.95 -------------------------------------------------------- Compound Frequencies 1. Weekly 2. Monthly 3. Quaterly 4. Semiannually 5. Annually Type your choice: 2 ========================================================= Simple Interest -------------------------------------------------------- Principal: 7248.95 Interest Rate: 14.75% Periods: 42 months ------------------------------- Interest Amount: 3742.27 Future Value: 10991.22 ========================================================= Press any key to close this window . . .
Conditionally Switching
Introduction
We saw that a switch conditional statement can process natural numbers and strings. It can also process Boolean values or logical expression. To proceed, you can write a Boolean variable or an expression that produces a Boolean value in the parentheses of switch(). Then, one case can consider a true value and another case would consider a false value. Here is an example:
using static System.Console; string conclusion; string emplTitle = "Manager"; bool emplIsManager = emplTitle == "Manager"; switch (emplIsManager) { case true: conclusion = "The employee is a manager."; break; case false: conclusion = "The staff member is a regular employee."; break; } WriteLine(conclusion); WriteLine("========================================");
This would produce:
The employee is a manager. ======================================== Press any key to close this window . . .
Switching a Boolean Expression
In the previous example, in the parentheses of switch(), we included a variable that held a Boolean value. As an alternative, you can include a Boolean expression. Here is an example:
using static System.Console;
string conclusion;
string emplTitle = "Manager";
switch(emplTitle == "Manager")
{
case true:
conclusion = "The employee is a manager.";
break;
case false:
conclusion = "The staff member is a regular employee.";
break;
}
WriteLine(conclusion);
WriteLine("========================================");
Otherwise, all the other comparison operators we studied can also be used. Here is an example:
using static System.Console;
double timeWorked = 30.00;
// If TimeWorked >= 40
switch (timeWorked >= 40.00)
{
case true:
WriteLine("The employee works full-time.");
break;
case false:
WriteLine("The staff member worked part-time.");
break;
}
WriteLine("========================================");
The main idea is to know how to convert an if conditional statement that uses a logical expression such as this:
using static System.Console;
WriteLine("FUN DEPARTMENT STORE");
WriteLine("=======================================================");
WriteLine("Payroll Preparation");
WriteLine("-------------------------------------------------------");
WriteLine("Enter the following pieces of information");
WriteLine("-------------------------------------------------------");
WriteLine("Employee Information");
WriteLine("-------------------------------------------------------");
Write("First Name: ");
string firstName = ReadLine();
Write("Last Name: ");
string lastName = ReadLine();
Write("Hourly Salary: ");
double hSalary = double.Parse(ReadLine());
WriteLine("-------------------------------------------------------");
WriteLine("Time worked");
WriteLine("-------------------------------------------------------");
Write("Monday: ");
double mon = double.Parse(ReadLine());
Write("Tuesday: ");
double tue = double.Parse(ReadLine());
Write("Wednesday: ");
double wed = double.Parse(ReadLine());
Write("Thursday: ");
double thu = double.Parse(ReadLine());
Write("Friday: ");
double fri = double.Parse(ReadLine());
double timeWorked = mon + tue + wed + thu + fri;
double regTime, overtime;
double regPay, overPay;
if(timeWorked <= 40.00)
{
regTime = timeWorked;
regPay = hSalary * timeWorked;
overtime = 0.00;
overPay = 0.00;
}
else
{
regTime = 40.00;
regPay = hSalary * 40.00;
overtime = timeWorked - 40.00;
overPay = hSalary * 1.50 * overtime;
}
double netPay = regPay + overPay;
WriteLine("+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+");
WriteLine("FUN DEPARTMENT STORE");
WriteLine("=======================================================");
WriteLine("Payroll Evaluation");
WriteLine("=======================================================");
WriteLine("Employee Information");
WriteLine("-------------------------------------------------------");
WriteLine($"Full Name: {firstName} {lastName}");
WriteLine($"Hourly Salary: {hSalary:f}");
WriteLine("=======================================================");
WriteLine("Time Worked Summary");
WriteLine("--------+---------+-----------+----------+-------------");
WriteLine(" Monday | Tuesday | Wednesday | Thursday | Friday");
WriteLine("--------+---------+-----------+----------+-------------");
WriteLine($" {mon:f} | {tue:f} | {wed:f} | {thu:f} | {fri:f}");
WriteLine("========+=========+===========+==========+=============");
WriteLine(" Pay Summary");
WriteLine("-------------------------------------------------------");
WriteLine(" Time Pay");
WriteLine("-------------------------------------------------------");
WriteLine($" Regular: {regTime:f} {regPay:f}");
WriteLine("-------------------------------------------------------");
WriteLine($" overtime: {overtime:f} {overPay:f}");
WriteLine("=======================================================");
WriteLine($" Net Pay: {netPay:f}");
WriteLine("=======================================================");
into a switch statement like this:
using static System.Console;
WriteLine("FUN DEPARTMENT STORE");
WriteLine("=======================================================");
. . .
double regTime, overtime;
double regPay, overPay;
switch(timeWorked <= 40.00)
{
case true:
regTime = timeWorked;
regPay = hSalary * timeWorked;
overtime = 0.00;
overPay = 0.00;
break;
case false:
regTime = 40.00;
regPay = hSalary * 40.00;
overtime = timeWorked - 40.00;
overPay = hSalary * 1.50 * overtime;
break;
}
double netPay = regPay + overPay;
. . .
WriteLine("=======================================================");
WriteLine($" Net Pay: {netPay:f}");
WriteLine("=======================================================");
Conditionally Selecting a Case
If you submit a Boolean variable or a logical expression to the parentheses of a switch(), you can process only two value, true and false. As we saw with if else conditional statements, sometimes you have many possibilities you need to consider. To do this in a switch(), you can create different cases and let each consider an outcome. In this case, for each section, type case followed by the desired logical operator and the corresponding value. In the body of the case section, write the code for that comparison. If all cases use the Less Than operator, the case must be listed from the lowest to the highest values. Here are examples:
using static System.Console;
WriteLine("FUN DEPARTMENT STORE"); ;
WriteLine("=======================================================");
WriteLine("Item Preparation"); ;
WriteLine("-------------------------------------------------------");
WriteLine("Enter the following pieces of information"); ;
WriteLine("-------------------------------------------------------");
int discountRate = 75;
double discountAmount = 0.00;
double discountedPrice = 0.00;
Write("Item Name: ");
string itemName = ReadLine();
Write("Original Price: ");
double originalPrice = double.Parse(ReadLine());
Write("Days in Store: ");
int daysInStore = int.Parse(ReadLine());
switch (daysInStore)
{
case < 15:
discountRate = 0;
break;
case < 35:
discountRate = 15;
break;
case < 45:
discountRate = 35;
break;
case < 60:
discountRate = 50;
break;
}
discountAmount = originalPrice * discountRate / 100;
discountedPrice = originalPrice - discountAmount;
WriteLine("+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+");
WriteLine("FUN DEPARTMENT STORE"); ;
WriteLine("=======================================================");
WriteLine("Store Inventory"); ;
WriteLine("-------------------------------------------------------");
WriteLine($"Item Name: {itemName}"); ;
WriteLine($"Original Price: {originalPrice}"); ;
WriteLine($"Days in Store: {daysInStore}"); ;
WriteLine($"Discount Rate: {discountRate}%"); ;
WriteLine($"Discount Amount: {discountAmount:f}"); ;
WriteLine($"Discounted Price: {discountedPrice:f}"); ;
WriteLine("=======================================================");
If the cases are using a > operator, they must be listed from the highest to the lowest values. Here are examples:
using static System.Console;
WriteLine("Stellar Water Point");
WriteLine("======================================================");
WriteLine("To prepare an invoice, enter the following information");
WriteLine("Types of Accounts");
WriteLine("1. Residential Household");
WriteLine("2. Laudromat");
WriteLine("3. Health Clinic");
WriteLine("4. Place of Worship/Youth Center");
WriteLine("5. Government Agency");
WriteLine("6. Other Business");
Write("Enter Type of Account: ");
string answer = ReadLine();
WriteLine("------------------------------------------------------");
Write("Counter Reading Start: ");
double counterReadingStart = double.Parse(ReadLine());
Write("Counter Reading End: ");
double counterReadingEnd = double.Parse(ReadLine());
double first25Therms, next15Therms, above40Therms;
double gallons = counterReadingEnd - counterReadingStart;
double HCFTotal = gallons / 748;
switch(HCFTotal)
{
case > 40.00:
first25Therms = 25.00 * 1.5573;
next15Therms = 15.00 * 1.2264;
above40Therms = (HCFTotal - 40.00) * 0.9624;
break;
case > 25.00:
first25Therms = 25.00 * 1.5573;
next15Therms = (HCFTotal - 25.00) * 1.2264;
above40Therms = 0.00;
break;
}
double waterUsageCharges = first25Therms + next15Therms + above40Therms;
double sewerCharges = waterUsageCharges * 0.252;
double environmentCharges = (answer == "1") ? (waterUsageCharges * 0.0025) : (waterUsageCharges * 0.0125);
double serviceCharges = (answer == "1") ? (waterUsageCharges * 0.0328)
: (waterUsageCharges * 0.11643);
double totalCharges = waterUsageCharges + sewerCharges + environmentCharges + serviceCharges;
double localTaxes = (answer == "1") ? (totalCharges * 0.035) : (totalCharges * 0.235);
double stateTaxes = (answer == "1") ? (totalCharges * 0.115) : (totalCharges * 0.815);
double amountDue = totalCharges + localTaxes + stateTaxes;
WriteLine("======================================================");
WriteLine("Stellar Water Point - Customer Invoice");
WriteLine("======================================================");
WriteLine("Meter Reading");
WriteLine("------------------------------------------------------");
WriteLine("Counter Reading Start: {0,10}", counterReadingStart);
WriteLine("Counter Reading End: {0,10}", counterReadingEnd);
WriteLine("Total Gallons Consumed: {0,10}", gallons);
WriteLine("======================================================");
WriteLine("Therms Evaluation");
WriteLine("------------------------------------------------------");
WriteLine("HCF Total: {0,10:n}", HCFTotal);
WriteLine("First 35 Therms (* 1.5573): {0,10:n}", first25Therms);
WriteLine("First 20 Therms (* 1.2264): {0,10:n}", next15Therms);
WriteLine("Above 40 Therms (* 0.9624): {0,10:n}", above40Therms);
WriteLine("------------------------------------------------------");
WriteLine("Water Usage Charges: {0,10:n}", waterUsageCharges);
WriteLine("Sewer Charges: {0,10:n}", sewerCharges);
WriteLine("======================================================");
WriteLine("Bill Values");
WriteLine("------------------------------------------------------");
WriteLine("Environment Charges: {0,10:n}", environmentCharges);
WriteLine("Service Charges: {0,10:n}", serviceCharges);
WriteLine("Total Charges: {0,10:n}", totalCharges);
WriteLine("Local Taxes: {0,10:n}", localTaxes);
WriteLine("State Taxes: {0,10:n}", stateTaxes);
WriteLine("------------------------------------------------------");
WriteLine("Amount Due: {0,10:n}", amountDue);
WriteLine("======================================================");
Introduction
When you create a switch statement, you ask it to consider each of the values that can fit the expression in the parentheses of switch(). Normally, you cannot match all the possible or available values. To consider a case that would apply to all possible values that don't fit the expression in the parentheses of switch(), you use a keyword named default. If you don't want to consider any particular value, you can create a switch statement that uses only a default case. The formula you would follow is:
switch(expression) { default: statement(s); break; }
Start with the default keyword. Like any case selection, the default section must have a body. The body of the default section starts with a colon after the default keyword and ends with a break; line. In the body, you can write any appropriate code you want. A lone default statement applies to every value, regardless of any condition you set. Here is an example:
using static System.Console;
int number = 125;
switch(number < 100)
{
default:
WriteLine("Number: {0}", number);
break;
}
This would produce:
Number: 125 Press any key to close this window . . .
Here is another version of the same program:
using static System.Console;
int number = 125;
switch(number > 100)
{
default:
WriteLine("Number: {0}", number);
break;
}
That version produces the same result as the other.
Switching to the default Outcome
We saw that, when all outcomes of an if statement have been considered but none of them fits, you can issue an else statement that would process all conditions that didn't fit any of the if and/or else if situations. Also, the else statement must be the last in an if conditional statement. To address the same type of issue, you can add a default case to a switch statement. The formula to follow would be:
switch(expression) { case choice1: statement1; break; case choice2: statement2; break; case choice-n: statement-n; break; default: default-statement; break; }
The rules of the default case are:
Here is an example:
using static System.Console; WriteLine("=========================================="); WriteLine(" - Amazing DeltaX - State Income Tax -"); WriteLine("=========================================="); double taxRate = 0.00; WriteLine("Enter the information for tax preparation"); WriteLine("States"); WriteLine(" AK - Alaska"); WriteLine(" AR - Arkansas"); WriteLine(" CO - Colorado"); WriteLine(" FL - Florida"); WriteLine(" GA - Georgia"); WriteLine(" IL - Illinois"); WriteLine(" IN - Indiana"); WriteLine(" KY - Kentucky"); WriteLine(" MA - Massachusetts"); WriteLine(" MI - Michigan"); WriteLine(" MO - Missouri"); WriteLine(" MS - Mississippi"); WriteLine(" NV - Nevada"); WriteLine(" NH - New Hampshire"); WriteLine(" NC - North Carolina"); WriteLine(" PA - Pennsylvania"); WriteLine(" SD - South Dakota"); WriteLine(" TN - Tennessee"); WriteLine(" TX - Texas"); WriteLine(" UT - Utah"); WriteLine(" WA - Washington"); WriteLine(" WY - Wyoming"); Write("Enter State Abbreviation: "); string abbr = ReadLine(); WriteLine("--------------------------------------------"); Write("Gross Salary: "); double grossSalary = double.Parse(ReadLine()); switch (abbr) { default: // "Florida", "Nevada", "Texas", "Washington", "Wyoming" taxRate = 0.00; break; case "CO": taxRate = 4.63; break; case "KY": taxRate = 5.00; break; case "IL": taxRate = 4.95; break; case "IN": taxRate = 3.23; break; case "MA": taxRate = 5.00; break; case "MI": taxRate = 4.25; break; case "NC": taxRate = 5.25; break; case "NH": taxRate = 5.00; break; case "PA": taxRate = 3.07; break; case "TN": taxRate = 1.00; break; case "UT": taxRate = 4.95; break; } double taxAmount = grossSalary * taxRate / 100.00; double netPay = grossSalary - taxAmount; WriteLine("============================================"); WriteLine(" - Amazing DeltaX - State Income Tax -"); WriteLine("--------------------------------------------"); WriteLine($"Gross Salary: {grossSalary:f}"); WriteLine($"Tax Rate: {taxRate:f}%"); WriteLine("--------------------------------------------"); WriteLine($"Tax Amount: {taxAmount:f}"); WriteLine($"Net Pay: {netPay:f}"); WriteLine("============================================");
Here is an example of running the program:
========================================== - Amazing DeltaX - State Income Tax - ========================================== Enter the information for tax preparation States AK - Alaska AR - Arkansas CO - Colorado FL - Florida GA - Georgia IL - Illinois IN - Indiana KY - Kentucky MA - Massachusetts MI - Michigan MO - Missouri MS - Mississippi NV - Nevada NH - New Hampshire NC - North Carolina PA - Pennsylvania SD - South Dakota TN - Tennessee TX - Texas UT - Utah WA - Washington WY - Wyoming Enter State Abbreviation: WA -------------------------------------------- Gross Salary: 2285.88 ============================================ - Amazing DeltaX - State Income Tax - -------------------------------------------- Gross Salary: 2285.88 Tax Rate: 0.00% -------------------------------------------- Tax Amount: 0.00 Net Pay: 2285.88 ============================================ Press any key to close this window . . .
Practical Learning: Ending the Lesson
|
|||
Previous | Copyright © 2001-2023, FunctionX | Saturday 29 April 2023, 11:26 PM | Next |
|