编辑:如果方法中有两个或更多功能,您需要做什么?我有问题的是,我需要从maxminavg方法返回多个变量,我不知道如何使它,所以每个新变量携带从maxminavg方法到主方法的值。
static void Main(string[] args)
{
double max = 0d;
double sum = 0d;
double min = arr[0];
double avg = sum / arr.Length;
double avgrnd = Math.Round(avg, 2);
int index1 = 0;
int index2 = 0;
int index3 = 0;
string[] txt = File.ReadLines(@"c: \Users\Stark\Moisture_Data.txt").ToArray();
double[] arr = txt.Select(Double.Parse).ToArray();
print(arr);
Console.WriteLine();
maxminavg(arr, sum, max, min, avg);
Console.WriteLine();
Index(arr, max, min, avgrnd, index1, index2, index3);
Console.ReadLine();
}
public static void maximinavg(double[] arr, double sum, double max, double min, double avg)
{
for (int i = 0; i < arr.Length; i++) {
sum += arr.Length;
if (max < arr[i]) {
max = arr[i];
}
if (min > arr[i]) {
min = arr[i];
}
}
avg = sum / arr.Length;
Console.Write("\nMaximum value in array: {0}, Mimimum value {1}, average value {2}", max, min, avg);
}
public static void Index(double[] arr, double max, double min, double avgrnd int index1, int index2, int index3)
{
for (int i = 0; i < arr.Length; i++)
{
if (max == arr[i])
{
index1 = i;
}
if (min == arr[i])
{
index2 = i;
}
if (avgrnd == arr[1])
{
index3 = i;
}
}
Console.Write("\nMax index {0}, Min index {1}, avg index {2}", index1, index2, index3);
}
答案 0 :(得分:2)
为什么不将函数结果返回到变量max?
我建议不要使用void函数并将函数结果直接返回到变量,如下所示。
static void Main(string[] args)
{
double max = 0d;
double sum = 0d;
int index = 0;
string[] txt = File.ReadLines(@"c: \Users\Stark\Moisture_Data.txt").ToArray();
double[] arr = txt.Select(Double.Parse).ToArray();
print(arr);
Console.WriteLine();
max = maximum(arr, sum, max);
Console.WriteLine();
Index(arr, max, index);
Console.ReadLine();
}
public static double maximum(double[] arr, double sum, double max)
{
for (int i = 0; i < arr.Length; i++) {
sum += arr.Length;
if (max < arr[i]) {
max = arr[i];
}
}
Console.Write("\nMaximim value in array: {0}", max);
return max;
}
public static void Index(double[] arr, double max, int index)
{
for (int i = 0; i < arr.Length; i++)
{
if (max == arr[i])
{
index = i;
}
}
答案 1 :(得分:0)
函数中使用的变量范围仅限于该函数。所以你应该按照sjdm的建议返回max值。
另一种方法是使用ref关键字。 e.g
主要方法:
max = maximum(arr,sum,ref max);
最大方法签名:
public static void maximum(double [] arr,double sum,ref double max)