C# 并非所有代码路径都返回值以及如何在C中显示方法#
我试图找到“中值”、“最大值”、“最小值”、“平均值”、“数字之和”,以及数组中是否有重复项。我在一开始创建方法并尝试在主方法中调用它们时遇到了问题。这产生了“访问非静态成员需要对象引用”,所以为了解决这个问题,我将所有变量都公开为静态变量。这不是最好的选择,但它奏效了。所以我解决了其余的问题,当我试图显示我有重复的代码时,我得到了“并非所有的代码路径都返回一个值”,因此任何关于如何解决这个问题以及清理代码的方法的帮助都将非常有帮助C# 并非所有代码路径都返回值以及如何在C中显示方法#,c#,arrays,return-value,C#,Arrays,Return Value,我试图找到“中值”、“最大值”、“最小值”、“平均值”、“数字之和”,以及数组中是否有重复项。我在一开始创建方法并尝试在主方法中调用它们时遇到了问题。这产生了“访问非静态成员需要对象引用”,所以为了解决这个问题,我将所有变量都公开为静态变量。这不是最好的选择,但它奏效了。所以我解决了其余的问题,当我试图显示我有重复的代码时,我得到了“并非所有的代码路径都返回一个值”,因此任何关于如何解决这个问题以及清理代码的方法的帮助都将非常有帮助 using System; using Sys
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);
}
}
使用系统;
使用System.Linq;
使用System.Collections.Generic;
使用系统文本;
公开课考试
{
公共静态int-maxNum;
公共部门;
公共静态双平均;
公共静态长sumNum;
公共静态双中位数;
公共静态int MaxNum(int[]randArray)
{
maxNum=randArray.Max();
WriteLine(“这是最大值:”+maxNum);
返回maxNum;
}
公共静态int MinNum(int[]随机数组)
{
minNum=randArray.Min();
Console.WriteLine(“这是最小值:“+minNum”);
返回minNum;
}
公共静态长SumNum(int[]randArray)
{
对于(int x=0;x
此方法公共静态int ShowDups(int[]randArray)
不返回任何内容。您只需向te控制台写入一条消息,而不会返回方法签名所期望的int
。首先,如果所有类成员都是静态的,只需将类改为静态
其次,如果您不想在函数中返回值,只想写入控制台,那么就使用
void
而不是int
在静态int ShowDups(int[]randArray)中不返回任何内容,而要“show methods”,您必须在主方法中创建类测试的实例。。类似于Test=new Test()的内容。。。然后test.MaxNum(randArray)看起来这些方法都不需要返回任何东西,可能需要返回void或Console.WriteLine的字符串?另外,ContainDups(randArray)==true
相当于ContainDups(randArray)
@AWinkle changed立即生效!谢谢