打破 1 方法创建 2
Breaking 1 method to create 2
打破 1 方法创建 2
有什么方法可以将这段代码拆分成 2 个方法吗?
一种方法应命名为 GetInput(),另一种方法应命名为 CalculateAve()
static void GetInput()
{
//declare a counter variable
int count = 0;
string inValue = "";
int sum = 0, intValue;
while (inValue != "DONE")
{
if (int.TryParse(inValue, out intValue) == false)
{
count--;
Console.WriteLine("type DONE to STOP entering scores:");
}
sum = sum + intValue;
Console.Write("Enter DONE to exit: ");
inValue = Console.ReadLine();
count++; // increase the counter to keep track of the number of inputs
}
int average = (int)sum / count; //calculate the average
Console.WriteLine(" Grade Result");
Console.WriteLine("Average: {0}", average); //print the average
static void Main(string[] args)
{
//Getting Input value and Calculate the Average
GetInput();
static void GetInput()
{
List<int> values = new List<int>();
int intValue;
while (true)
{
var test = Console.ReadLine();
if (int.TryParse(test, out intValue))
{
}
else if(test.ToUpper()=="DONE")
{
break;
}
else
{
Console.WriteLine("type DONE to STOP entering scores:");
}
}
double average = GetAverage(values);
Console.WriteLine(" Grade Result");
Console.WriteLine("Average: {0}", average); //print the average
}
static double GetAverage(List<int> values)
{
return (double)values.Sum() / (double)values.Count();
}
static void Main(string[] args)
{
//Getting Input value and Calculate the Average
GetInput();
}
这似乎是一个很homework-y的问题,所以我不知道答案的水平是否合适。
但是你真的不应该自己计算任何东西的平均值,因为 C# 有为此内置的函数。
我会这样做:
static IEnumerable<int> GetScoresFromConsole()
{
while (true)
{
var input = Console.ReadLine();
if (input.ToUpper() == "DONE")
break;
if (int.TryParse(input, out var i))
yield return i;
else
Console.WriteLine("type DONE to STOP entering scores:");
}
}
public static void Main()
{
var scores = GetScoresFromConsole();
Console.WriteLine($"Average: {scores.Average()}");
}
打破 1 方法创建 2
有什么方法可以将这段代码拆分成 2 个方法吗? 一种方法应命名为 GetInput(),另一种方法应命名为 CalculateAve()
static void GetInput()
{
//declare a counter variable
int count = 0;
string inValue = "";
int sum = 0, intValue;
while (inValue != "DONE")
{
if (int.TryParse(inValue, out intValue) == false)
{
count--;
Console.WriteLine("type DONE to STOP entering scores:");
}
sum = sum + intValue;
Console.Write("Enter DONE to exit: ");
inValue = Console.ReadLine();
count++; // increase the counter to keep track of the number of inputs
}
int average = (int)sum / count; //calculate the average
Console.WriteLine(" Grade Result");
Console.WriteLine("Average: {0}", average); //print the average
static void Main(string[] args)
{
//Getting Input value and Calculate the Average
GetInput();
static void GetInput()
{
List<int> values = new List<int>();
int intValue;
while (true)
{
var test = Console.ReadLine();
if (int.TryParse(test, out intValue))
{
}
else if(test.ToUpper()=="DONE")
{
break;
}
else
{
Console.WriteLine("type DONE to STOP entering scores:");
}
}
double average = GetAverage(values);
Console.WriteLine(" Grade Result");
Console.WriteLine("Average: {0}", average); //print the average
}
static double GetAverage(List<int> values)
{
return (double)values.Sum() / (double)values.Count();
}
static void Main(string[] args)
{
//Getting Input value and Calculate the Average
GetInput();
}
这似乎是一个很homework-y的问题,所以我不知道答案的水平是否合适。 但是你真的不应该自己计算任何东西的平均值,因为 C# 有为此内置的函数。
我会这样做:
static IEnumerable<int> GetScoresFromConsole()
{
while (true)
{
var input = Console.ReadLine();
if (input.ToUpper() == "DONE")
break;
if (int.TryParse(input, out var i))
yield return i;
else
Console.WriteLine("type DONE to STOP entering scores:");
}
}
public static void Main()
{
var scores = GetScoresFromConsole();
Console.WriteLine($"Average: {scores.Average()}");
}