【问题标题】:C# method callingC#方法调用
【发布时间】:2015-08-22 17:13:46
【问题描述】:

我从 C# 开始,一般是编码。

我尝试编写基于控制台的三项式计算器,但是我在主方法(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();
        }
    }
}

【问题讨论】:

  • 是的,两者都非常有帮助。谢谢你。但是,现在我很难理解为什么我在计算方法中的方程一直给我“NaN”......我怀疑这与 C# 无法在同一方法中处理 int 和 double 有关。

标签: c# class methods


【解决方案1】:

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

像这样更改您的代码:

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

【讨论】:

    【解决方案2】:

    您没有将参数传递给方法。代码中还有一些不需要的东西,比如 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;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多