使用单选按钮做一些基本的数学运算

时间:2017-03-12 23:53:06

标签: c#

我正在制作一个程序,计算出有车辆停放时需要支付的费用。我正在尝试使用单选按钮来选择车辆的类型。当选择汽车(radiobutton1)时,算法可以工作,但是当选择卡车(radiobutton2)时,它将不起作用。这是我的代码

 // cars 
        if (radioButton1.Checked == true)
        {



            int hac = Convert.ToInt16(txthrs.Text);
            int h1c = 5;
            int h2c = 3;



            if (txthrs.Text == "1") ;
            money.Text = h1c.ToString();

            if (hac < 1) ;
            money.Text = (h1c + (hac - 1) * h2c).ToString();
            // end of cars 
            // trucks 
            if (radioButton2.Checked == true)
            {

                int hat = Convert.ToInt16(txthrs.Text);
                int h1t = 6;
                decimal h2t = 3.5m;



                if (txthrs.Text == "1") ;
                money.Text = h1t.ToString();

                if (hat < 1) ;
                money.Text = (h1t + (hat - 1) * h2t).ToString();
            }
        }
    }
}

}

2 个答案:

答案 0 :(得分:2)

  

当卡车(radiobutton2)被选中时,它将无法工作。

首先,你有一些逻辑上的错误,因为if (hac < 1) ;(hat < 1) ;根本没有做任何事情,它只是一个表达式。考虑到这一点,我已更新您的代码以消除这些逻辑错误。

其次,请勿使用==来比较strings,而是使用Equals()方法。

第三,radioButton2条件嵌套在radioButton1条件中,因此会导致意外行为。您可以通过将它们分开来解决它:

if (radioButton1.Checked == true)
{
      int hac = Convert.ToInt16(txthrs.Text);
      int h1c = 5;
      int h2c = 3;

      if (txthrs.Text.ToString().Equals("1")) 
          money.Text = h1c.ToString();

      if (hac < 1) 
          money.Text = (h1c + (hac - 1) * h2c).ToString();
}

if (radioButton2.Checked == true)
{
     int hat = Convert.ToInt16(txthrs.Text);
     int h1t = 6;
     decimal h2t = 3.5m;

     if (txthrs.Text.ToString().Equals("1")) 
           money.Text = h1t.ToString();
     if (hat < 1) 
           money.Text = (h1t + (hat - 1) * h2t).ToString();

}

答案 1 :(得分:0)

您已嵌套if语句,第二个if语句仅在选中单选按钮1时才会执行。将第二个if块移出第一个。