繁体   English   中英

C#方法调用

[英]C# method calling

我开始使用C#进行一般编码。

我已经尝试过对基于控制台的三项式计算器进行编码,但是我在使用main方法( CalculateDisplayResult )中的后两种方法的参数时遇到了麻烦。 Visual Studio一直在说:

没有给出与所需形式参数相对应的参数。

谁能帮我?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TrinomialCalculator
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Trinomial Calculator");
            Console.WriteLine("====================");
            Console.ReadLine();
            Console.Clear();
            GetValues();
            Calculate();
            DisplayResult();
        }
        static int[] GetValues()
        {
            int[] values = new int[3];
            string numInput;
            Console.WriteLine("ax^2+bx+c");
            Console.WriteLine("=========");
            Console.ReadLine();

            while (true)
            {
                Console.WriteLine("Enter an integer for 'a': ");
                numInput = Console.ReadLine();
                int.TryParse(numInput, out values[0]);
                Console.WriteLine("Enter an integer for 'b': ");
                numInput = Console.ReadLine();
                int.TryParse(numInput, out values[1]);
                Console.WriteLine("Enter an integer for 'c': ");
                numInput = Console.ReadLine();
                int.TryParse(numInput, out values[2]);

                if (values[0] == 0 || values[1] == 0 || values[2] == 0)
                {
                    Console.WriteLine("One or more inputs are invalid. Try again.");
                    Console.ReadLine();
                    Console.Clear();
                    continue;
                }
                else
                {
                    break;
                }
            }
            Console.WriteLine("{0}x^2+{1}x+{2}", values[0], values[1], values[2]);
            Console.ReadLine(); 
            Calculate(values);
            return values;
        }
        public static double[] Calculate(int[] values)
        {
            double[] result = new double[2];
            result[0] = -values[1] + Math.Sqrt(values[1] ^ 2 - 4 * values[0] * values[2]);
            result[1] = -values[1] - Math.Sqrt(values[1] ^ 2 - 4 * values[0] * values[2]);
            DisplayResult(result);
            return result;
        }
        static void DisplayResult(double[] result)
        {
            Console.WriteLine("X(1)={0}\n X(2)={1}", result[0], result[1]);
            Console.ReadKey();
        }
    }
}

方法CalculateDisplayResult具有1个参数,但是它们使用0个参数调用。

像这样更改代码:

static void Main(string[] args)
{
    Console.WriteLine("Trinomial Calculator");
    Console.WriteLine("====================");
    Console.ReadLine();
    Console.Clear();
    double[] x =  Calculate(GetValues());
    DisplayResult(x);
}

您没有将参数传递给方法。 代码中还有一些不需要的东西,例如while(true)循环和else子句什么也没做。

我改写了一下。 与您的比较,看看您的想法。

祝您学习编程好运。 这是一个伟大的职业。

using System;

namespace TrinomialCalculator
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Trinomial Calculator");
            Console.WriteLine("====================");
            GetValues();
            Console.ReadLine();
        }
        static void GetValues()
        {
            Console.WriteLine("ax^2+bx+c");
            Console.WriteLine("=========");

            string numInput;
            int[] values = new int[3];

            Console.WriteLine("Enter an integer for 'a': ");
            numInput = Console.ReadLine();
            int.TryParse(numInput, out values[0]);
            Console.WriteLine("Enter an integer for 'b': ");
            numInput = Console.ReadLine();
            int.TryParse(numInput, out values[1]);
            Console.WriteLine("Enter an integer for 'c': ");
            numInput = Console.ReadLine();
            int.TryParse(numInput, out values[2]);

            if (values[0] == 0 || values[1] == 0 || values[2] == 0)
            {
                Console.WriteLine("One or more inputs are invalid. Try again.");
                return;
            }

            Console.WriteLine("{0}x^2+{1}x+{2}", values[0], values[1], values[2]);
            DisplayResult(values);
        }
        static double[] DisplayResult(int[] values)
        {
            double[] result = new double[2];
            result[0] = -values[1] + Math.Sqrt(values[1] ^ 2 - 4 * values[0] * values[2]);
            result[1] = -values[1] - Math.Sqrt(values[1] ^ 2 - 4 * values[0] * values[2]);
            Console.WriteLine("X(1)={0}\n X(2)={1}", result[0], result[1]);
            return result;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM