Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果变量在main方法之外,如何显示索引号_C#_Arrays_For Loop_Double - Fatal编程技术网

C# 如果变量在main方法之外,如何显示索引号

C# 如果变量在main方法之外,如何显示索引号,c#,arrays,for-loop,double,C#,Arrays,For Loop,Double,编辑:如果一个方法中有两个或多个函数,您必须执行什么操作。我遇到的问题是,我需要从maxminavg方法返回多个变量,我不知道如何使它这样,每个新变量都将maxminavg方法的值传递给main方法 static void Main(string[] args) { double max = 0d; double sum = 0d; double min = arr[0]; double avg = sum / arr.Le

编辑:如果一个方法中有两个或多个函数,您必须执行什么操作。我遇到的问题是,我需要从maxminavg方法返回多个变量,我不知道如何使它这样,每个新变量都将maxminavg方法的值传递给main方法

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);
    } 
static void Main(字符串[]args)
{
双最大值=0d;
双和=0d;
双最小值=arr[0];
双平均=总和/排列长度;
double avgrnd=数学四舍五入(平均值,2);
int index1=0;
int index2=0;
int index3=0;
字符串[]txt=File.ReadLines(@“c:\Users\Stark\weather_Data.txt”).ToArray();
double[]arr=txt.Select(double.Parse.ToArray();
打印(arr);
Console.WriteLine();
最大最小值(arr、总和、最大值、最小值、平均值);
Console.WriteLine();
指数(arr、max、min、avgrnd、index1、index2、index3);
Console.ReadLine();
}
公共静态无效最大值(双[]arr,双和,双最大,双最小,双平均)
{
对于(int i=0;iarr[i]){
最小值=arr[i];
}
}
平均值=总和/排列长度;
Write(“\n数组中的最大值:{0},最小值{1},平均值{2}”,max,min,avg);
}
公共静态空隙指数(双[]arr,双最大值,双最小值,双平均值int index1,int index2,int index3)
{
对于(int i=0;i
为什么不将函数结果返回到变量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;
        }
    }
static void Main(字符串[]args)
{
双最大值=0d;
双和=0d;
int指数=0;
字符串[]txt=File.ReadLines(@“c:\Users\Stark\weather_Data.txt”).ToArray();
double[]arr=txt.Select(double.Parse.ToArray();
打印(arr);
Console.WriteLine();
最大值=最大值(arr,总和,最大值);
Console.WriteLine();
指数(arr、最大值、指数);
Console.ReadLine();
}
公共静态双最大值(双[]arr,双和,双最大值)
{
对于(int i=0;i
函数中使用的变量范围仅限于该函数。因此,您应该按照sjdm的建议返回max值

另一种方法是使用ref关键字

在主要方法中:

max=最大值(arr、sum、ref max)

最大值法签字:


公共静态无效最大值(双[]arr,双和,参考双最大值)

是否可以包含此文件c:\Users\Stark\weather\u Data.txt?因此返回的最大值表示变量max包含数组中的最大值?这允许在索引方法中使用新的max变量。是的,您返回的是在最大值函数中分配的变量“max”的值。您正在分配该retu您在函数“max”之外定义的变量的rned值。我可以看出您是如何感到困惑的。这与c#中的变量范围和函数范围有关。我建议您对此进行一些阅读,因为这可能是一件非常复杂的事情,但一旦您这样做,就会完全有意义:)