如何检查文本框中的数字是否大于预定义值

时间:2010-07-18 13:43:33

标签: c# if-statement

我正在做一个必须要做停车场申请的练习。 目标是:创建一个带有numericUpDown控件的表单,用于选择车辆停放的时间。添加选项按钮以显示车辆是汽车还是卡车。清楚地标记每个框和按钮。添加标签或文本框以显示要支付的金额。

另外,我必须设置一些限制。汽车24小时不应超过38.00美元,24小时内卡车不超过44.50美元。

我发现的唯一问题是我无法设置这些限制。它给出了一个错误:使用未分配的局部变量'result'。

检查注释的///代码。

任何帮助非常感谢。这不是一个学业项目,我只是自己学习c#并做一些练习。

以下是代码:

        private void calculate_Click(object sender, EventArgs e)
    {
        double carhours = 3;
        double truckhours = 3.50;
        double carFirsthour = 5;
        double truckFirsthour = 6;
        int hrs = (int)numericUpDown.Value;
        double result;
        int maxCarFee = 38;


        if (numericUpDown.Value < 1)
        {
            MessageBox.Show("NO WAY");
            return;
        }

        if (carButton.Checked == true && (numericUpDown.Value == 1))
        {
            result = (hrs * carFirsthour);
            fee.Text = "$" +  result;
        }

        if (carButton.Checked == true && (numericUpDown.Value > 1))
        {
            result = ((hrs - 1) * carhours + carFirsthour);
            fee.Text = "$" + result;
        }

        if (truckButton.Checked == true && (numericUpDown.Value == 1))
        {
            result = (hrs * truckFirsthour);
            fee.Text = "$" + result;
        }

        if (truckButton.Checked == true && (numericUpDown.Value > 1))
        {
            result = ((hrs - 1) * truckhours + truckFirsthour);
            fee.Text = "$" + result;
        }

        /// limits

        ///if (carButton.Checked == true && (numericUpDown.Value < 24) && (result > maxCarFee))
        ///{
        ///    fee.Text = "$" + maxCarFee;
        ///}
    }

5 个答案:

答案 0 :(得分:1)

您需要转换numericUpDown.Value 到int32

或者因为你这样做了:

int hrs = (int)numericUpDown.Value; 

你可以在if语句中使用hrs而不是numericUpDown.Value

答案 1 :(得分:1)

尝试这样的事情:

private void calculate_Click(object sender, EventArgs e) {
    double carhours = 3.0;
    double truckhours = 3.5;
    double carFirsthour = 5.0;
    double truckFirsthour = 6.0;
    double maxCarFee = 38.0;
    double maxTruckFee = 44.5;

    int hrs = (int)numericUpDown.Value;
    double result;

    if (hrs < 1) {
        MessageBox.Show("NO WAY");
        return;
    }

    if (carButton.Checked) {
        result = (hrs-1) * carhours + carFirsthour;
        if (result > maxCarFee) {
            result = maxCarFee;
        }
    }
    else {
        result = (hrs-1) * truckhours + truckFirsthour;
        if (result > maxTruckFee) {
            result = maxTruckFee;
        }
    }

    fee.Text = "$" +  result;
}

但是,如果汽车/卡车停留时间超过24小时(或超过48小时),您并不清楚会发生什么。您可能会得到更一致的结果,如下所示:

private void calculate_Click(object sender, EventArgs e) {
    double hourlyFee = 3.0;
    double firstHourFee = 5.0;
    double max24hrFee = 38.0;

    if (!carButton.Checked) {
       hourlyFee = 3.5;
       firstHourFee = 6.0;
       max24hrFee = 44.5;
    }

    int hrs = (int)numericUpDown.Value;
    if (hrs < 1) {
        MessageBox.Show("NO WAY");
        return;
    }

    double result = 0.0;
    if (hrs >= 24) {
       result = (hrs / 24) * max24hrFee;
       hrs = hrs % 24;
    }

    if (hrs > 0) {
       result = result + firstHourFee + ((hrs-1) * hourlyFee);
    }

    fee.Text = "$" +  result;
}

答案 2 :(得分:0)

你检查numericUpDown.Value是否小于24,我认为你的意思是更大(&gt;)?!

使用未分配的局部变量'result'

表示您不初始化变量。你必须做这样的事情

result = 0 

在你去if构造之前。

答案 3 :(得分:0)

问题是没有执行任何条件(if)语句,因此永远不会为result赋值。在其声明中分配result - double result = 0D; - 代码将运行,以便您可以调试条件逻辑。

答案 4 :(得分:-1)

int hrs = (int)numericUpDown.Value;

你可以在hrs中获得价值,这样你就可以在if条件下使用它。

if (carButton.Checked == true && (numericUpDown.Value == 1))

写如下。无需== true

if (carButton.Checked && (numericUpDown.Value == 1))