C# 如何获得可变的totalCredit以适当增加

C# 如何获得可变的totalCredit以适当增加,c#,loops,switch-statement,C#,Loops,Switch Statement,在我的程序中,我应该让用户输入课程选择,最多3个。我遇到的问题是,为了使切换以3门课程结束,它必须更新totalCredit的值,直到达到9(即总共3门课程,每门课程值3学分)。基本上,当您已经输入了3门课程并尝试输入第4门课程时,它应该在WriteCompt方法中输出case-3,但它似乎根本没有更改totalCredit变量 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用System.Threading.Tasks;

在我的程序中,我应该让用户输入课程选择,最多3个。我遇到的问题是,为了使切换以3门课程结束,它必须更新totalCredit的值,直到达到9(即总共3门课程,每门课程值3学分)。基本上,当您已经输入了3门课程并尝试输入第4门课程时,它应该在WriteCompt方法中输出case-3,但它似乎根本没有更改totalCredit变量

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
命名空间控制台注册学生
{
班级计划
{
静态void Main(字符串[]参数)
{
(新程序()).run();
}
无效运行()
{
智力选择;
int firstChoice=0,secondChoice=0,thirdChoice=0;
int totalCredit=0;
字符串yesOrNo=“”;
System.Console.WriteLine(“教师副本”);
做
{
writecompt();
choice=Convert.ToInt32(Console.ReadLine());
开关(ValidateChoice(选项、第一选项、第二选项、第三选项、totalCredit))
{
案例1:
WriteLine(“您输入的选项{0}不是可识别的课程。”,choice);
打破
案例2:
WriteLine(“您已经为这个{0}课程注册了。”,ChoiceToCourse(choice));
打破
案例3:
Console.WriteLine(“您的注册时间不能超过9个学分。”);
打破
案例4:
Console.WriteLine(“课程{0}的注册已确认。”,ChoiceToCourse(choice));
总积分+=3;
if(firstChoice==0)
第一选择=选择;
else if(secondChoice==0)
第二选择=选择;
else if(第三选择==0)
第三选择=选择;
打破
}
书面注册(第一选择、第二选择、第三选择);
控制台。写(“\N您想再试一次吗?(Y | N)?:”;
yesOrNo=(Console.ReadLine()).ToUpper();
}而(yesOrNo==“Y”);
Console.WriteLine(“感谢您在我们注册”);
}
void WritePrompt()
{
Console.WriteLine(“请通过在[]内键入数字来选择要注册的课程”);
Console.WriteLine(“[1]IT 145\n[2]IT 200\n[3]IT 201\n[4]IT 270\n[5]IT 315\n[6]IT 328\n[7]IT 330”);
控制台。写(“输入您的选择:”;
}
int ValidateChoice(int-choice、int-firstChoice、int-secondChoice、int-thirdChoice、int-totalCredit)
{
如果(选项<1 | |选项>7)
返回-1;
else if(choice==firstChoice&&choice==secondChoice&&choice==thirdChoice)
返回-2;
否则如果(总积分>9)
返回-3;
返回-4;
}
无效写入注册(int firstChoice、int secondChoice、int thirdChoice)
{
if(secondChoice==0)
WriteLine(“您当前注册了{0}”,ChoiceToCourse(firstChoice));
else if(第三选择==0)
WriteLine(“您当前注册了{0}、{1}”、ChoiceToCourse(第一选择)、ChoiceToCourse(第二选择));
其他的
WriteLine(“您当前注册了{0}、{1}、{2}”、ChoiceToCourse(第一选择)、ChoiceToCourse(第二选择)、ChoiceToCourse(第三选择));
}
字符串选项课程(整数选项)
{
字符串course=“”;
开关(选择)
{
案例1:
course=“IT 145”;
打破
案例2:
course=“IT 200”;
打破
案例3:
课程=“IT 201”;
打破
案例4:
course=“IT 270”;
打破
案例5:
course=“IT 315”;
打破
案例6:
course=“IT 328”;
打破
案例7:
course=“IT 330”;
打破
违约:
打破
}
返回路线;
}
}
}

没有错误消息,没有生成错误,只是程序逻辑不起作用。

当您成功进入3门课程时,totalCredit将增加3倍。如果初始值为0,则处理第四个课程条目时totalCredit的值为9

如果要触发-3,则需要更改:

else if (totalCredit > 9)
致:


“似乎没有改变totalCredit变量”-您是如何观察到这一点的?只有一行代码修改该变量。调试时,是否达到该行?执行后,变量的值是否已更改?听起来你更像是在做假设,而不是观察行为并询问行为。在调试器中单步执行代码。当你这么做的时候,哪个特定的操作首先产生了一个意想不到的结果?我不敢相信我错过了。非常感谢。
else if (totalCredit >= 9)