【问题标题】:No overload method 'conversationOutput' takes '2' arguments没有重载方法“conversationOutput”采用“2”参数
【发布时间】:2016-03-18 04:08:35
【问题描述】:

您好,我遇到了错误“没有重载方法 'conversationOutput' 需要 '2' 个参数”,请帮忙。我在理解方法调用和从 main() 调用变量时遇到了一些问题。

class MainClass
{

    static void Main ()
    {
        string selection;
        double values;

        selection = userChoice(); 

        values = userInput(selection);  

        conversationOutput(selection, values);


    }

    static string userChoice ()
    {

        string choose;

        Console.WriteLine("Welcome to the OHM's law calculator! \n \nWhat would you like to calcualte?");
        Console.WriteLine("1. Voltage:");
        Console.WriteLine("2. Current:");
        Console.WriteLine("3. Resistance:");
        do
        {
            choose = Console.ReadLine();
            if (choose != "1" && choose != "2" && choose != "3")
            {
                Console.WriteLine("Please only select '1' for voltage, '2' for current, '3' resistance");
            }
        } while (choose != "1" && choose != "2" && choose != "3");

        switch (choose)
        {
            case "1":
                Console.Write("You have choose to calculate Voltage.\n");
                break;

            case "2":
                Console.Write("You have choose to calculate Current.\n");
                break;

            case "3":
                Console.WriteLine("You have choose to calculate Resistance.\n");
                break;

        }
        return choose;

    }

    static double userInput (string choose)
    {

        double voltageD = 0.0;
        double currentD = 0.0;
        double resistanceD = 0.0;
        string current;
        string voltage;
        string resistance;
        bool ok = true;


        do if (choose != "1")
        {
            do
            {
                Console.WriteLine("Please enter your value for Voltage (volts)...");
                voltage = Console.ReadLine();
                ok = double.TryParse(voltage, out voltageD);
                if (!ok)
                {
                    Console.WriteLine("Please Enter a NUMERICALE VALUE ONLY");
                }
            } while (!ok);

            if (voltageD < 0)
            {
                Console.WriteLine("Please select a number larger than the lower limit of 0 volts");
            }
        } while (voltageD < 0);



        do if (choose != "2")
        {
            do
            { 
                Console.WriteLine("Please enter your value for Current (amp)...");
                current = Console.ReadLine();
                ok = double.TryParse(current, out currentD);
                if (!ok)
                {
                    Console.WriteLine("Please Enter a NUMERICALE VALUE ONLY");
                }
            } while (!ok);
            if (currentD < 0.01)
            {
                Console.WriteLine("Please select a number larger than the lower limit of 0.01 amp");
            }
        } while (currentD < 0.01);



        do if (choose != "3")
        {
            do
            {
                Console.WriteLine("Please enter your value for Resistance (ohm)...");
                resistance = Console.ReadLine();
                ok = double.TryParse(resistance, out resistanceD);
                if (!ok)
                {
                    Console.WriteLine("Please Enter a NUMERICALE VALUE ONLY");
                }
            } while (!ok);
            if (resistanceD < 10)
            {
                Console.WriteLine("Please select a number larger than the lower limit of 10 ohm");
            }
        } while (resistanceD < 10);
        return 0;
    }

    static double conversationOutput (string choose, double currentD, double voltageD, double resistanceD)
    {
        /* v = i*r */

        double output = 0.0;
        string units = "";

        if (choose == "1")
        {
            output = (currentD) * (resistanceD);
            units = "Volts";
        }

        if (choose == "2")
        {
            output = (voltageD) / (resistanceD);
            units = "Amps";
        }

        if (choose == "3")
        {
            output = (voltageD) / (resistanceD);
            units = "OHM";
        }


        Console.WriteLine("The calculated value is {0:F3} {1:F3}", output, units);
        return 0;

    }
}

【问题讨论】:

  • 你的conversationOutput 有四个参数,你只传递了两个。

标签: c# methods arguments overloading


【解决方案1】:

原因是你有方法

double conversationOutput (string choose, double currentD, double voltageD, double resistanceD)

它有 4 个参数,而您只向方法传递了 2 个参数。

【讨论】:

    【解决方案2】:

    将缺少的参数定义为可选

    static double conversationOutput (string choose, double currentD, double voltageD =0, double resistanceD =1) 
    

    【讨论】:

      【解决方案3】:

      根据方法定义,conversationOutput 需要四个参数。

      static double conversationOutput (string choose, double currentD, double voltageD, double resistanceD) {}
      

      但你只是通过传递两个参数来调用它。

      conversationOutput(selection, values);
      

      这就是您收到此类错误的原因。

      如果你通过传递四个参数来调用conversationOutput方法,它就会起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-15
        • 1970-01-01
        相关资源
        最近更新 更多