Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

How to replace if - else statements with switch statements ?

Posted on 2015-02-16
2
102 Views
Last Modified: 2015-02-16
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()
        {
            Console.WriteLine("Please enter salary");
            string input = Console.ReadLine();

            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);
        }


    }
}

Open in new window

0
Comment
Question by:naseeam
2 Comments
 
LVL 14

Accepted Solution

by:
frankhelk earned 500 total points
ID: 40612747
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
 
LVL 33

Expert Comment

by:it_saige
ID: 40612932
To illustrate what frank is saying; consider the following:
using System;

namespace EE_Q28617929
{
	class Program
	{
		static void Main(string[] args)
		{
			Console.WriteLine("Please enter salary");
			string input = Console.ReadLine();
			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);
		}
	}
}

Open in new window


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

-saige-
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction Although it is an old technology, serial ports are still being used by many hardware manufacturers. If you develop applications in C#, Microsoft .NET framework has SerialPort class to communicate with the serial ports.  I needed to…
Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question