并不是所有的代码路径都返回一个值,以及如何在c#中显示方法
本文关键字:方法 显示 一个 代码 路径 返回 并不是 | 更新日期: 2023-09-27 18:17:05
我试图找到"中位数","最大值","最小值","平均值","数字之和",如果数组中有任何重复项。我在开始的时候遇到了问题,当我做了我的方法,并试图在主方法中调用它们。这就产生了"访问非静态成员需要对象引用",因此为了解决这个问题,我将所有变量都设置为公共静态。虽然不是最好的选择,但还是成功了。所以我解决了剩下的问题,当我试图显示我有重复的时候,我得到"不是所有的代码路径都返回一个值",所以任何关于如何修复这个问题的帮助和任何清理代码的方法都将非常有帮助。
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
public class Test
{
public static int maxNum;
public static int minNum;
public static double avgNum;
public static long sumNum;
public static double median;
public static int MaxNum(int[] randArray)
{
maxNum = randArray.Max();
Console.WriteLine("This is the maximum value: " + maxNum);
return maxNum;
}
public static int MinNum(int[] randArray)
{
minNum = randArray.Min();
Console.WriteLine("This is the minimum value: " + minNum);
return minNum;
}
public static long SumNum(int[] randArray)
{
for(int x =0; x < randArray.Length;x++)
sumNum = sumNum +randArray[x];
Console.WriteLine("This is the sum of values: " + sumNum);
return sumNum;
}
public static double Average(int[] randArray)
{
avgNum = randArray.Average();
Console.WriteLine("This is the average of the values: " + avgNum);
return avgNum;
}
public static int GetMedian(int[] randArray)
{
int size = randArray.Length;
int mid = size / 2;
double median = (size % 2 != 0) ? (double)randArray[mid] : ((double)randArray[mid] + (double)randArray[mid - 1]) / 2;
Console.WriteLine("This is the median value:" + median);
return Convert.ToInt32((median));
}
public static bool ContainDups(int[] randArray)
{
for (int i = 0; i < randArray.Length; i++)
{
for (int j = i + 1; j < randArray.Length; j++)
{
if (randArray [i] == randArray [j])
return true;
}
}
return false;
}
public static int ShowDups(int[] randArray)
{
if(ContainDups(randArray) == true)
{
Console.WriteLine("Contains duplicate numbers");
}
else
{
Console.WriteLine("No duplicate numbers");
}
}
public static void Main()
{
int[] randArray = new int[1000];
Random r = new Random();
for(int i = 0; i < randArray.Length; i++)
{
randArray[i] = r.Next();
}
Array.Sort(randArray);
for (int i = 0; i < 1000; i++)
{
// Console.WriteLine(","+randArray[i]);
}
MaxNum(randArray);
MinNum(randArray);
SumNum(randArray);
Average(randArray);
GetMedian(randArray);
ContainDups(randArray);
ShowDups(randArray);
}
}
这个方法public static int ShowDups(int[] randArray)
没有返回任何东西。您只需向控制台写入一条消息,而不返回方法签名所期望的int
。
首先,如果所有类成员都是静态的,那么就把类设置为静态。
其次,如果你不打算在你的函数中返回值,只是写到控制台,那么使用void
代替int