# How to replace if - else statements with switch statements ?

The following code calculates income tax.  Can it be replaced with "switch" and "case" statements ?

``````using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyFirstProject.day1.examples
{
class tax
{
static void Main()
{

double salary = Convert.ToDouble(input);
double tax;

if (salary <= 8350)
{
tax = 8350 * .10;
}
else if (salary <= 33950)
{
tax = (8350 * .10) + ((salary - 8350) * .15);
}
else
{
tax = (8350 * .10) + ((33950 - 8350) * .15) + ((salary - 33950) * .25);
}

Console.WriteLine("Tax = " + tax);
}

}
}
``````
LVL 1
###### Who is Participating?

Commented:
Not really. switch/case acts on fixed values, unsually integers, strings and enumertions (which are usually represented internally as integers.

The switch/case construct would therefore need the input variable to be converted ... i.e. with the if/then/elseif statement. That would be overcomplicated in your case ... but it would make sense if there are many segments in the code reacting on the same decision ... in that case it would make sense to compare once, stor the decision in an int (or an enumertion) and switch/case at multiple points in the code.
0

DeveloperCommented:
To illustrate what frank is saying; consider the following:
``````using System;

namespace EE_Q28617929
{
class Program
{
static void Main(string[] args)
{
double salary = Convert.ToDouble(input);
double tax;
switch ((int)salary)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
// So forth and so on till you reached 8350
case 8350:
tax = 8350 * .10;
break;
case 8351:
case 8352:
case 8353:
case 8354:
case 8355:
case 8356:
case 8357:
case 8358:
case 8359:
case 8360:
// So forth and so on till you reached 33950
case 33950:
tax = (8350 * .10) + ((salary - 8350) * .15);
break;
default:
tax = (8350 * .10) + ((33950 - 8350) * .15) + ((salary - 33950) * .25);
break;
}
Console.WriteLine("Tax = " + tax);
}
}
}
``````

It is just far *too* inefficient to do this with a switch...case statement.

-saige-
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.