C#中的嵌套if语句
nested if statement in C#
我得到了命令提示符,并得到了 Bad Score 的正确答案,但是如果我尝试输入一个好成绩 (800),它什么也没做。任何帮助将不胜感激。我是新手,所以很抱歉我的编码器不漂亮。
//variables
string firstName, lastName, grades = "";
double points = 0, percent = 0;
//Greeting
Console.WriteLine("The purpose of this program is to allow the teacher to calculate the percentage and final grade for students in their class.");
//Display and Inputs
Console.WriteLine("\n\nPlease enter the students first name.");
firstName = Console.ReadLine();
Console.WriteLine("\n\nPlease enter the students last name.");
lastName = Console.ReadLine();
Console.WriteLine("\n\nPlease enter the points that the student received.\n\n");
points = Convert.ToDouble(Console.ReadLine());
//Display after points are entered
if (points < 0 || points > 1000 )
{
Console.WriteLine("Bad Score!");
}
else
{
percent = points / 1000;
if (percent >= .9)
{
grades = "A";
}
else if (percent >= .8)
{
grades = "B";
}
if (percent >= .7)
{
grades = "C";
}
else if (percent >= .6)
{
grades = "D";
}
if (percent >= .0)
{
grades = "F";
}
else
{
Console.WriteLine("WRONG!!");
}
}
grades = Console.ReadLine();
//Outputs
Console.WriteLine(firstName);
Console.WriteLine(lastName);
Console.WriteLine(points);
Console.WriteLine(percent.ToString("P"));
Console.WriteLine("so they made an" + grades);
//Closing statement
Console.WriteLine("Goodbye");
Environment.Exit(1);
}
}
}
您获得 grades
变量正确性。但是在 ifs 语句的末尾,您要覆盖它的值,所以只需删除这一行:
grades = Console.ReadLine();
PS:您还可以将所有 if
s 语句与 else if
链接起来
你有一堆问题
您在 'C' 和 'F' 分支之前缺少 else
。目前,所有正成绩将变为 'F's
else if (percent >= .7)
{
grades = "C";
}
再一次
else if (percent >= .0)
{
grades = "F";
}
- 然后您将用此行覆盖您计算的成绩
grades = Console.ReadLine();
我相信你可能有意:
Console.WriteLine(grades);
- 您的应用程序将在计算后退出。我建议在末尾添加
Console.ReadLine
或类似内容,以允许用户查看结果
你的pgms乍一看有两个问题
你的if..else
里面写错了else
应该是
else
{
percent = points / 1000;
if (percent >= .9)
{
grades = "A";
}
else if (percent >= .8)
{
grades = "B";
}
else if (percent >= .7)
{
grades = "C";
}
else if (percent >= .6)
{
grades = "D";
}
else if (percent >= .0)
{
grades = "F";
}
else
{
Console.WriteLine("WRONG!!");
}
}
你在检查 percent >= 0.7 和 percent >=.0 时是否遗漏了其他信息
假设您输入了 800,那么百分比将为 0.8,那么条件 if percent >=.08 将为 true 并且 grade ="B" 并且由于 percent >= 0.7 没有其他它也将通过并且 grade 将变为 "c" 最后在检查 percent >= .0 时没有 else 所以它也会通过并且等级将变为 "F" 所以在所有情况下都需要 else。所以最后,无论正百分比是多少,由于缺少 else.. 在 if 条件下
,成绩将是 "F"
- 你应该删除
grade = Consolde.ReadLine();
因为它会覆盖你的成绩。
- 假设您输入
名字 - Puneet
姓氏 - Chawla
输入学生获得的分数 -
800
10
那么答案是
普尼特
乔拉
800
80.00 %
所以他们做了an10
再见
当此条件为假时,如果 (points < 0 || points > 1000) 那么您将根据我认为的百分比给出评分,您不需要再次从用户那里获得评分。
在某些情况下,可能会出现错误的输出,因为你设置了
错误 - if,elseif, if,elseif,if then else
正确 - if,elseif,elseif,elseif,elseif then else.
我得到了命令提示符,并得到了 Bad Score 的正确答案,但是如果我尝试输入一个好成绩 (800),它什么也没做。任何帮助将不胜感激。我是新手,所以很抱歉我的编码器不漂亮。
//variables
string firstName, lastName, grades = "";
double points = 0, percent = 0;
//Greeting
Console.WriteLine("The purpose of this program is to allow the teacher to calculate the percentage and final grade for students in their class.");
//Display and Inputs
Console.WriteLine("\n\nPlease enter the students first name.");
firstName = Console.ReadLine();
Console.WriteLine("\n\nPlease enter the students last name.");
lastName = Console.ReadLine();
Console.WriteLine("\n\nPlease enter the points that the student received.\n\n");
points = Convert.ToDouble(Console.ReadLine());
//Display after points are entered
if (points < 0 || points > 1000 )
{
Console.WriteLine("Bad Score!");
}
else
{
percent = points / 1000;
if (percent >= .9)
{
grades = "A";
}
else if (percent >= .8)
{
grades = "B";
}
if (percent >= .7)
{
grades = "C";
}
else if (percent >= .6)
{
grades = "D";
}
if (percent >= .0)
{
grades = "F";
}
else
{
Console.WriteLine("WRONG!!");
}
}
grades = Console.ReadLine();
//Outputs
Console.WriteLine(firstName);
Console.WriteLine(lastName);
Console.WriteLine(points);
Console.WriteLine(percent.ToString("P"));
Console.WriteLine("so they made an" + grades);
//Closing statement
Console.WriteLine("Goodbye");
Environment.Exit(1);
}
}
}
您获得 grades
变量正确性。但是在 ifs 语句的末尾,您要覆盖它的值,所以只需删除这一行:
grades = Console.ReadLine();
PS:您还可以将所有 if
s 语句与 else if
你有一堆问题
您在 'C' 和 'F' 分支之前缺少
else
。目前,所有正成绩将变为 'F'selse if (percent >= .7) { grades = "C"; }
再一次
else if (percent >= .0)
{
grades = "F";
}
- 然后您将用此行覆盖您计算的成绩
grades = Console.ReadLine();
我相信你可能有意:
Console.WriteLine(grades);
- 您的应用程序将在计算后退出。我建议在末尾添加
Console.ReadLine
或类似内容,以允许用户查看结果
你的pgms乍一看有两个问题
你的
if..else
里面写错了else
应该是else { percent = points / 1000; if (percent >= .9) { grades = "A"; } else if (percent >= .8) { grades = "B"; } else if (percent >= .7) { grades = "C"; } else if (percent >= .6) { grades = "D"; } else if (percent >= .0) { grades = "F"; } else { Console.WriteLine("WRONG!!"); } }
你在检查 percent >= 0.7 和 percent >=.0 时是否遗漏了其他信息 假设您输入了 800,那么百分比将为 0.8,那么条件 if percent >=.08 将为 true 并且 grade ="B" 并且由于 percent >= 0.7 没有其他它也将通过并且 grade 将变为 "c" 最后在检查 percent >= .0 时没有 else 所以它也会通过并且等级将变为 "F" 所以在所有情况下都需要 else。所以最后,无论正百分比是多少,由于缺少 else.. 在 if 条件下
,成绩将是 "F"- 你应该删除
grade = Consolde.ReadLine();
因为它会覆盖你的成绩。
- 假设您输入
名字 - Puneet 姓氏 - Chawla 输入学生获得的分数 - 800 10
那么答案是
普尼特 乔拉 800 80.00 % 所以他们做了an10 再见
当此条件为假时,如果 (points < 0 || points > 1000) 那么您将根据我认为的百分比给出评分,您不需要再次从用户那里获得评分。
在某些情况下,可能会出现错误的输出,因为你设置了 错误 - if,elseif, if,elseif,if then else 正确 - if,elseif,elseif,elseif,elseif then else.