[英]C# method calling
我开始使用C#进行一般编码。
我已经尝试过对基于控制台的三项式计算器进行编码,但是我在使用main方法( Calculate
和DisplayResult
)中的后两种方法的参数时遇到了麻烦。 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();
}
}
}
方法Calculate
和DisplayResult
具有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.