`if`陈述问题

时间:2015-09-24 11:56:14

标签: c# if-statement

我为我的课程制作了一个小速度引文表格,用于计算预定字段并将其添加到用户速度中。

例如,如果用户选择访问者,如果违规事件发生在夜间,则最低引用数为25美元,则额外罚款25美元。如果学生被选中,那么每英里的引用次数为#35 +额外的2美元,除非选择二年级学生而不是5美元。

不幸的是,IF语句是我的祸根,我的IF语句出错,因为我的数学没有正确出现。如果我选择一个学生+晚上+ 20中20,那总数应该等于70,我得到10。

GUI图片:http://postimg.org/image/doy6n0sp3/

编辑:我最终重新编写代码来解决我遇到的问题

4 个答案:

答案 0 :(得分:2)

我觉得你的意思是

sophomoreOver = (double.Parse(SpeedtextBox.Text) - speedLimit) * 5;
freshmenOver = (double.Parse(SpeedtextBox.Text) - speedLimit) * 2;

答案 1 :(得分:1)

为什么要这样:

学生+晚上+ 20 = 20 = 70?

如果学生= 45,夜晚= 25,你还要再加25?

现在,如果你只是说你正在寻找学生+晚上,那么你是对的,但这里有一段代码每次都在运行,可能会导致你的问题:

if (SophCB.Checked)
{
    ticketPrice = ticketPrice + sophomoreOver;
}
else
{
    ticketPrice = ticketPrice + freshmenOver; // this is running if you don't select SophCB every time.
}

基本上ticketPrice将是:

ticketPrice = ticketPrice + sophomoreOver;

ticketPrice = ticketPrice + freshmenOver;

答案 2 :(得分:0)

我在代码中看到的一个错误是缺少大括号。 *将在-之前执行。

替换

sophomoreOver = double.Parse(SpeedtextBox.Text) - speedLimit * 5;
freshmenOver = double.Parse(SpeedtextBox.Text) - speedLimit * 2;

通过

sophomoreOver = ( double.Parse(SpeedtextBox.Text) - speedLimit ) * 5;
freshmenOver = ( double.Parse(SpeedtextBox.Text) - speedLimit ) * 2;

答案 3 :(得分:0)

如果您希望仅向学生收取2美元或5美元的费用,我还建议您嵌入您的IF语句。

        if (VisitorRB.Checked)
        {
            ticketPrice = visitorFine ;
        }
        else if (StudentRB.Checked)
        {
            ticketPrice = studentFine;
            if (SophCB.Checked)
            {
                ticketPrice = ticketPrice + sophomoreOver;
            }
            else
            {
                ticketPrice = ticketPrice + freshmenOver;
            }
        }