C# 如果变量在main方法之外,如何显示索引号
编辑:如果一个方法中有两个或多个函数,您必须执行什么操作。我遇到的问题是,我需要从maxminavg方法返回多个变量,我不知道如何使它这样,每个新变量都将maxminavg方法的值传递给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
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#中的变量范围和函数范围有关。我建议您对此进行一些阅读,因为这可能是一件非常复杂的事情,但一旦您这样做,就会完全有意义:)