我编写了一些代码,并且可以正常工作,但是现在尝试获取一些代码并将其更改为Class。我已经将部分代码更改为第一个方法,然后将其转换为Class。但是这最后一部分代码很难弄清楚如何更改为方法,因此我可以创建一个类。
else if (input == "3")
{
Console.WriteLine("Here are your Students: ");
Array.Sort(names);
Console.WriteLine(String.Join(", ", names));
Console.WriteLine("");
double average = gradesList.Average();
if (average >= 90)
{
Console.WriteLine($"There average is a {average.ToString("n2")} which is an A.");
}
else if (average >= 80)
{
Console.WriteLine($"There average is a {average.ToString("n2")} which is an B.");
}
else if (average >= 70)
{
Console.WriteLine($"There average is a {average.ToString("n2")} which is an C.");
}
else if (average >= 60)
{
Console.WriteLine($"There average is a {average.ToString("n2")} which is an D.");
}
else
{
Console.WriteLine($"There average is a {average.ToString("n2")} which is an E.");
}
}
我想离开的第一部分只是将“成绩”部分更改为“班级”。我尝试了公共静态字符串GetLetterGrade(int average) return($“平均会有一个{average.ToString(” n2“)},它是A。”),但是会得到我不理解的各种错误。
答案 0 :(得分:1)
我会将等级设为非可变结构。它代表一个值,并且应该是一个值类型。类是引用类型。
public readonly struct Grade
{
public Grade(double percentage)
{
Percentage = percentage;
}
public double Percentage { get; }
public char Letter
{
get {
if (Percentage >= 90) return 'A';
if (Percentage >= 80) return 'B';
if (Percentage >= 70) return 'C';
if (Percentage >= 60) return 'D';
return 'E';
}
}
public override string ToString() => $"{Percentage:n2} ({Letter})";
}
由于if语句返回,因此不必具有else部分。
然后,您可以轻松地通过以下方式打印邮件
double average = gradesList.Average();
var grade = new Grade(average);
Console.WriteLine(
$"There average is a {grade.Percentage:n2} which is an {grade.Letter}.");
请注意,由于ToString
被覆盖,因此您可以直接打印成绩。
Console.WriteLine($"The average grade is {grade}");
它将打印类似The average grade is 74.25 (C)
的内容。
答案 1 :(得分:0)
这应该有效
public static char GetLetterGrade(double average)
{
if (average >= 90)
{
return 'A';
}
else if (average >= 80)
{
return 'B';
}
else if (average >= 70)
{
return 'C';
}
else if (average >= 60)
{
return 'D';
}
return 'E';
}
但是如果您希望使用GetLetterGrade(int average)
重载,请像这样使用它
double average = gradesList.Average();
var grade = GetLetterGrade((int)average);