所以我正在尝试创建一个分级程序,用户在主题上输入1-100之间的数字;数学,健身房和教室,平均数量上升,使学生在A-F之间得分。
我陷入循环,我不知道如何编码,所以如果我输入平均80分,B级就会出现。它出现了无法检测到的代码。
static string GradeMe(int average)
{
int grades1 = 90; (took away the const)
int grades2 = 75;
if (grades1 >= 90 && grades1 <= 100)
{
return "Grade A";
}
(???->) else if (grades2 >= 75 && grades32 <= 89) {return "Grade B";}
}
static int CalculateAverageGrades(int math, int gym, int classroom)
{
int sum = math + gym + classroom;
return sum / 3;
}
static void Main(string[] args)
{
Console.WriteLine("math: ");
int math= Convert.ToInt32(Console.ReadLine());
Console.WriteLine("gym: ");
int gym = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("classroom: ");
int classroom = Convert.ToInt32(Console.ReadLine());
int medeltal = CalculateAverageGrades(math, gym, classroom); //hämtar calculate metoden
Console.WriteLine("medel: " + medeltal);
string grade = GradeMe(medeltal);
Console.WriteLine(grade);
答案 0 :(得分:1)
您正在寻找else if
建筑:
//TODO: out the right thresholds
static string GradeMe(int average) {
if (average >= 90) // 90+
return "Grade A";
else if (average >= 80) // [80..90)
return "Grade B";
else if (average >= 70) // [70..80)
return "Grade C";
else if (average >= 50) // [50..70)
return "Grade D";
else // less than 50
return "Grade E";
}
三元运营商? :
是更短但不太可读替代方案:
static string GradeMe(int average) {
return average >= 90 ? "Grade A"
: average >= 80 ? "Grade B"
: average >= 70 ? "Grade C"
: average >= 50 ? "Grade D"
: "Grade E";
}
编辑:如果您想重复,循环就是解决方案;我建议也提取方法ReadGrade
:
static int ReadGrade(string title) {
while (true) {
Console.WriteLine(title);
int result = 0;
if (int.TryParse(Console.ReadLine(), out result) &&
result >= 0 &&
result <= 100)
return result;
Console.WriteLine("Please, try again");
}
}
static void Main(string[] args) {
do {
int medeltal = (ReadGrade("math: ") +
ReadGrade("gym: ") +
ReadGrade("classroom: ")) / 3;
Console.WriteLine(GradeMe(medeltal));
Console.WriteLine("Next grade (Y/N)?");
}
while (string.Equals("Y",
Console.ReadLine().Trim(),
StringComparison.OrdinalIgnoreCase))
}
答案 1 :(得分:0)
在功能GradeMe()
中,您创建const int grades1 = 90;
和const int grades2 = 75;
,然后检查条件if (grades1 >= 90 && grades1 <= 100)
,这始终为真,因为grades1 >= 90
为真且{{1 }} 是真的。所以永远不会达到你的其他声明。
你必须检查&#34中的平均值;如果&#34; =&GT;
grades1 <= 100
等等。
最重要的是功能的所有部分都必须返回一些值。你必须写&#39;否则&#39;对于最后一个案例
答案 2 :(得分:0)
*首先你没有定义<span>click to toggle iframe's focus</span>
而是定义了2级
*秒他们(grade32
,grade1
,grade2
,...)不是传入值,调用者方法传递给grade32
方法,但GradeMe()
,因此您应该将这些值与您的文字值进行比较。
第三,你的第一个条件会捕获得分为90到100的项目,所以不是你不能,但你不需要在你的第二个条件表达中再次提及它,并且只是说它大于75 ..
average
因为您使用if(x>=90 && x<=100) return "A";
if(x>=75) return "B";
if(x>=50) return "C";
....
return "F";
,所以您也不需要return
,因为该方法会返回,您可以省略所有else
。