Switch语句的重载方法错误

时间:2014-03-10 18:19:35

标签: c# visual-studio-2012

应用程序应对输入的两个数字执行所选的菜单数学运算并显示答案。您必须使用每个数学运算的方法,并且必须使用决策来选择应该执行的方法。 如果未输入正确的菜单编号,应用程序将显示错误消息。这是一个决定,其中1-5是有效选择,其他一切都是“无效”。 申请不得允许除以零。如果第二个数字变量为零,则不执行除法运算,而是显示错误消息。

我编写了代码,但程序显示以下错误: 1.方法AddNumber没有重载需要0个参数。 switch语句中的所有数学运算方法都显示此错误。 2.对于DivideNumber方法 - 并非所有代码路径都返回值

class Program
{
    static void Main(string[] args)
    {
         double  n1 = Convert.ToDouble(Console.ReadLine());
        //string n2 = "";
       double n2 = Convert.ToDouble(Console.ReadLine());

        Console.Clear();
        Console.WriteLine("Simple Calculator");
        Console.WriteLine("\t 1) ADD");
        Console.WriteLine("\t 2) SUBTRACT");
        Console.WriteLine("\t 3) MULTIPLY");
        Console.WriteLine("\t 4) DIVIDE");
        Console.WriteLine("\t 5) QUIT");
        Console.Write("Enter Selection: ");

        int menuSelection =0;
      //  double total;

          //  menuSelection = Console.ReadLine();
            switch (menuSelection)
            {
                case 1:
                   // total = Convert.ToInt32(AddNumbers("Results:"));
                   Console.WriteLine(AddNumbers(n1,n2));
                    break;
                case 2:
                    Console.WriteLine(SubtractNumber(n1,n2));
                    break;
                case 3:
                    Console.WriteLine(MultiplyNumber(n1,n2));
                    break;
                case 4:
                    Console.WriteLine(DivideNumber(n1,n2));
                    break;
                case 5:
                    break;           

                default:
                    Console.WriteLine("Invalid Selection !");
                    Console.ReadLine();
                    return;
            } 

        //Ask user to enter two numbers
        Console.WriteLine();
        Console.Write("Enter Number 1:", n1);
      //  number1 = Console.ReadLine();
        Console.Write("Enter Number 2:", n2);
      //  number2 = Console.ReadLine();

    }
    public static double AddNumbers(double number1, double number2)
    {
        return number1 + number2;
    }

    public static double SubtractNumber(double number1, double number2)
    {
        return number1 - number2;
    }

    public static double MultiplyNumber(double number1, double number2)
    {
        return number1 * number2;
    }

    public static double DivideNumber(double number1, double number2)
    {
        if (number1 == 0 && number2 == 0)
        {
            Console.WriteLine("Cannot Divide by Zero.    Try Again");
            return 0;
        }
        else
        {
            return number1 / number2;
        }
    }

3 个答案:

答案 0 :(得分:1)

第一个错误您在拨打开关案例后正在接受输入

第二个错误你的函数有两个参数,所以传递它们。

与您的切换案例中的DivideNumber(number1,number2)一样

希望你理解

我注意到的一件事是您正在string中输入,而您的函数需要double parameters,因此您需要将字符串转换为double。

让你知道使用double来获取像double n1 = Convert.ToDouble(console.readline());这样的输入,因为来自console的输入是字符串。

答案 1 :(得分:1)

  1. 您正在调用您的函数return AddNumbers();

    但已将其声明为public static double AddNumbers(double number1, double number2)

    AddNumbers预期有2个数字,你已经过了0。

  2. 您不会从DivideNumbers返回任何内容,但您已声明它返回double。 public static double DivideNumber

  3. 程序毫无意义。你试图在他们给你数字之前做手术。您应该自己尝试Rubber Duck这个

答案 2 :(得分:0)

This应该做你想要完成的事情。